jQuery   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jquery – 我的.on()表现得像.bind(),而不是.live()大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_404_6@ 我有一个复杂的嵌套形式(Ryan Bates’版本),其中.live()附加到一些动态生成的元素上,我现在正在转换到.on()以及从 Jquery 1.4升级到1.7.

以下是~22个变化之一的示例:

# old version with .live()
$('.options .image').live('click',function(){
    console.log('clicked .options')
})

# new version with .on()
$('.options').on('click','.image',function(){
    console.log('clicked .options')
})

这些更改对于已存在的表单元素非常有效,但它们对于之后动态创建的任何嵌套元素都失败了.因此,它更像是Jquery的绑定而不是直播.你知道这里会发生什么吗?

由于代码的复杂程度太高而且很多部分内容我暂时搁置(希望你有预感!).谢谢.

解决方法

根据3nigma的评论,但使用原始选择器修改,这将工作:

$(document).on('click','.options .image',function() {
  console.log('clicked .options');
});

但是,我不认为将文档设置为监听器通常是要走的路.在带有.live()的原始版本中,您将在.options节点中选择.image节点.

但问题并不是说哪些部分是动态加载的.我怀疑.options也是动态加载的内容的一部分.使用.on()委托侦听器时的第一个选择器必须是不被破坏的东西:

$('#someWrapper').on('click',function() {
  console.log('clicked .options');
});

#someWrapper不需要是一个新的包装元素,它可以是任何祖先(有些人称之为“父”……但这是一个用词不当,因为它可能是祖父母或曾祖父母或其他什么!)即没有被破坏.越接近目标选择器(.options .imagE)越好.

大佬总结

以上是大佬教程为你收集整理的jquery – 我的.on()表现得像.bind(),而不是.live()全部内容,希望文章能够帮你解决jquery – 我的.on()表现得像.bind(),而不是.live()所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。