【发布时间】:2017-09-14 02:08:59
【问题描述】:
我在阅读http://api.jquery.com/delegate/ 时了解到任何.delegate() 代码都可以用等效的.on() 代码编写。该链接提供了此示例:
例如下面的 .delegate() 代码:
$( "table" ).delegate( "td", "click", function() {
$( this ).toggleClass( "chosen" );
});
等价于使用.on()编写的以下代码:
$( "table" ).on( "click", "td", function() {
$( this ).toggleClass( "chosen" );
});
我正在使用带有 jQuery 1.3.1 的旧系统。它广泛使用.livequery()。我想摆脱这个 Live Query 插件,但仍然继续使用 jQuery 1.3.1 一段时间。请不要给我一个答案,建议我只是升级到最新版本的 jQuery 或改用 .on(),因为 .on() 在 jQuery 1.3.1 中不可用。现在,我必须继续使用 jQuery 1.3.1,但将所有出现的 .livequery() 替换为使用 .delegate() 的等效项。那可能吗?我想知道您是否可以使用.livequery() 执行某些操作,而使用.delegate() 等效项则无法完成。谢谢。
【问题讨论】:
-
应该是可以的。我认为您需要尝试在代码中转换
.livequery()的一些实际实例,以便了解转换的复杂性。 -
delegate()方法是在 1.4.2 版本中添加的,所以不,如果您受限于 1.3.1,则无法使用它。 -
也就是说,nnnn的评论给整个企业泼了一盆冷水。
-
抱歉,我不熟悉 Live Query 插件。一般来说,如果我需要在 1.4.2 之前的 jQuery 版本中使用委托行为,我只会使用
.live(),或者在你的情况下,我现在会坚持使用该插件,然后再切换到.delegate()或.on()如果您最终能够升级到 jQuery 1.4.2+ 或 1.7+。 -
是的,使用 POJS,但是如果你把注意力集中在两种不同的冒泡模型上,你会发疯的。
标签: jquery livequery jquery-1.3