Jquery 使用bind()和on()的自定义事件
我遇到了添加自定义事件以检测来自键盘或鼠标事件的输入文本更改的代码: 代码有点旧,文档中说要使用Jquery 使用bind()和on()的自定义事件,jquery,Jquery,我遇到了添加自定义事件以检测来自键盘或鼠标事件的输入文本更改的代码: 代码有点旧,文档中说要使用bind()来附加自定义事件,例如: $('#exhibita').bind('hastext', function () { $('#exhibitaButton').removeClass('disabled').attr('disabled', false); }); 国家 从jQuery1.7开始,.on()方法是将事件处理程序附加到文档的首选方法。对于早期版本,.bind()方法用于
bind()
来附加自定义事件,例如:
$('#exhibita').bind('hastext', function () {
$('#exhibitaButton').removeClass('disabled').attr('disabled', false);
});
国家
从jQuery1.7开始,.on()方法是将事件处理程序附加到文档的首选方法。对于早期版本,.bind()方法用于将事件处理程序直接附加到元素
我想我可以把代码改写为:
$(document).on('hastext', '#exhibita', function () {
$('#exhibitaButton').removeClass('disabled').attr('disabled', false);
});
但事件处理程序从未被触发
问题
- 我在()上使用
时出错了吗
- 提供自定义事件的代码必须重写以支持()上的
?如果是这样,有什么必须改变的
是否被记录为jQuery未来版本中删除的候选对象?我在文档中没有看到折旧警告,但我知道bind()
和live()
已从1.9中删除die()
- 是否有一种未来的方法可以在不重写代码的情况下使用这些自定义事件
的方式正在创建更公平的授权。这基本上相当于旧的jquerylive
此自定义事件可能无法正常冒泡。请尝试以下方法:
$('#exhibita').on('hastext', function () {
如果bind起作用,这将起作用。您在
上使用的方法是创建甚至是委托。这基本上相当于旧的jquerylive
此自定义事件可能无法正常冒泡。请尝试以下方法:
$('#exhibita').on('hastext', function () {
如果bind起作用,这将起作用。非授权版本正在起作用。有没有想过为什么自定义事件可能无法正确冒泡,或者如何解决这个问题?我认为它更类似于旧的.delegate,但我可能错了。.live确实是这样工作的吗?@freshyeball因为document
被用作第一个选择器,所以它与live
相同。如果使用任何其他选择器代替文档
,则该选择器与委托
相同delegate
也可以用document
调用,在这种情况下,它也相当于live
。@EricJ。不太确定。它可能与插件的内部结构有关,甚至可能与您自己的代码有关。确保层次结构中的某个位置没有重新运行false或调用event.stopPropagation
的处理程序。您可以在一个页面上测试这个问题,只需#exhibita
,看看是您的代码还是插件导致了问题。@JamesMontagne正是我所想的。非授权版本正在工作。有没有想过为什么自定义事件可能无法正确冒泡,或者如何解决这个问题?我认为它更类似于旧的.delegate,但我可能错了。.live确实是这样工作的吗?@freshyeball因为document
被用作第一个选择器,所以它与live
相同。如果使用任何其他选择器代替文档
,则该选择器与委托
相同delegate
也可以用document
调用,在这种情况下,它也相当于live
。@EricJ。不太确定。它可能与插件的内部结构有关,甚至可能与您自己的代码有关。确保层次结构中的某个位置没有重新运行false或调用event.stopPropagation
的处理程序。您可以在一个页面上测试这个问题,只需#exhibita
,看看是您的代码还是插件导致了这个问题。@JamesMontagne正是我所想的。