有件事困扰了我一段时间了,jQuery API说:
As of jQuery 1.7, the .live() method is deprecated. Use .on() to attach event handlers.当我试图在我的小部件管理端(小部件类的表单()操作)中添加一些jquery内容时,我惊讶地发现无法使用on(),而使用live()来完成这项工作。
所以我的问题是:,为什么,我误解了什么?
向你问好,当然还有你的时间。
ps我使用>= 1.7版本摆脱诅咒。
编辑:
<?php
class Test_Slider_Widget extends WP_Widget
{
public function form( $instance ) {
?>
<span id="test">Test</span>
<script>
jQuery(document).ready(function($) {
/* $('#test').on('click', function { //doesn't work
alert('test');
}); */
$('#test').live('click', function { //work
alert('test');
});
});
</script>
<?php }编辑2:好,总是使用$this->get_field_ id ('id-text')来拥有唯一的ID,否则id将被复制,这是wordpress管理中小部件重复代码的原因。感谢Xec为我指明了方向:)
发布于 2012-12-21 12:02:42
不推荐的.live()方法绑定到document,每次单击都会检查#test选择器在调用处理程序之前是否匹配。如果希望在.on()中使用此行为,则可以使用委托语法。
有关更详细的信息,请查看http://api.jquery.com/on/#direct-and-delegated-events。
为了进行快速修复,您可以使用以下内容来模拟.live()代码:
$(document).on('click', '#test', function () {
alert('test');
});为了获得更有效的代码,您可以用一个与document的静态祖先匹配的选择器替换#test。
希望这能有所帮助!
编辑:
从你的“编辑2”,我知道你的问题是重复的i,但我会把这个答案留给后人。
https://stackoverflow.com/questions/13987518
复制相似问题