jQuery 1.7.1 on()在live()工作时不起作用

时间:2012-05-03 14:47:24

标签: jquery

我有一个简单的代码段

$('.box_tile_image').live('click', function() {
console.log('click');   
});

问题是我想使用on()因为live()已被弃用,但如果我在上面的情况下使用 - 我没有“点击“,如果我用 live 替换 ,它就像一件轻而易举的事。

可能是什么问题?

3 个答案:

答案 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');   
});