我有一个简单的代码段
$('.box_tile_image').live('click', function() {
console.log('click');
});
问题是我想使用on()
因为live()
已被弃用,但如果我在上面的情况下使用 - 我没有“点击“,如果我用 live 替换 ,它就像一件轻而易举的事。
可能是什么问题?
答案 0 :(得分:5)
主选择器应位于 WRAPPER ELEMENT
上$('#MyWrapperElement').on('click',".box_tile_image",function() {
console.log('click');
});
答案 1 :(得分:5)
等价物是:
$(document).on('click', '.box_tile_image', function() {
console.log('click');
});
...事实上,如果你从1.7开始查看jQuery源代码,那就是live
。{/ p>
现在,那就是说,我强烈建议将点击更接近目标元素,而不是一直在document
。但是对于字面上的等价物,如果所讨论的元素真的没有其他共同的祖先,那就是你要做的。
答案 2 :(得分:1)
$(document).on('click', '.box_tile_image', function() {
console.log('click');
});
或者您可以使用delegate()
$(document).delegate('.box_tile_image', 'click', function() {
console.log('click');
});
您可以使用document
的任何祖先,而不是box_title_image
。
假设你有像下面这样的DOM:
<div id="container">
<img class="box_tile_image" src="" alt="">
</div>
然后你可以写:
$('#container').on('click', '.box_tile_image', function() {
console.log('click');
});
或
$('#container').delegate('.box_tile_image', 'click', function() {
console.log('click');
});