1

我遇到了添加自定义事件以检测源自键盘或鼠标事件的输入文本更改的代码:

http://www.zurb.com/playground/jquery-text-change-custom-event

代码有点旧,文档说用于bind()附加自定义事件,例如:

$('#exhibita').bind('hastext', function () {
  $('#exhibitaButton').removeClass('disabled').attr('disabled', false);
});

jQuery文档状态

从 jQuery 1.7 开始,.on() 方法是将事件处理程序附加到文档的首选方法。对于早期版本,.bind() 方法用于将事件处理程序直接附加到元素。

我以为我可以将代码重写为:

$(document).on('hastext', '#exhibita', function () {
  $('#exhibitaButton').removeClass('disabled').attr('disabled', false);
});

但永远不会触发事件处理程序。

问题

  • 我在使用 时犯了错误on()吗?
  • 是否必须重写提供自定义事件的代码以支持on()?如果是这样,必须改变什么?
  • bind()记录为在未来版本的 jQuery 中删除的候选者?我没有在文档中看到折旧警告,但我知道live()die()已从 1.9 中删除...
  • 是否有一种面向未来的方式来使用这些自定义事件而无需重写代码?
4

1 回答 1

1

您在on此处使用的方式是创建偶数委托。这基本上相当于旧的 jquery live

此自定义事件可能没有正确冒泡。试试这个:

$('#exhibita').on('hastext', function () {

如果绑定有效,这将有效。

于 2013-03-11T21:06:15.547 回答