为什么.live()有效,但不是.on()?

时间:2012-02-22 03:09:20

标签: jquery

在jquery1.71中,不推荐使用.live()。尽管如此,它仍然有效

var toggleBtn = document.createElement('input');
toggleBtn.id = 'toggleBtn';
toggleBtn.type = 'button';
toggleBtn.value = 'Close';
box.appendChild(toggleBtn);

$('#toggleBtn').live('click', function() {
   alert("hihi");            
});

我尝试了推荐的.on()。奇怪的是,这失败了

var toggleBtn = document.createElement('input');
toggleBtn.id = 'toggleBtn';
toggleBtn.type = 'button';
toggleBtn.value = 'Close';
box.appendChild(toggleBtn);

$('#toggleBtn').on('click', function() {
   alert("hihi");            
}); 

2 个答案:

答案 0 :(得分:5)

请务必完整阅读文档。要使.on().live()(或.delegate())一样工作,第二个参数必须是委托的选择器。

$(document).on('click', '#toggleBtn', function () {});

当然,您可以使用更具体的选择器。

答案 1 :(得分:0)

这对我来说很好,这是一个jsFiddle:

Ubuntu 11.10上的Firefox 11.0。