这两个jQuery引用有什么区别,为什么不能与.live一起使用?

时间:2012-07-30 23:14:59

标签: jquery-1.4

EmployeeId是具有一组选项的select元素的id。这种方法不起作用:

var tar = document.getElementById("EmployeeId");
$(tar).live("click", function(){
 console.log("Changed");
});

然而,这种方法确实:

$("#EmployeeId").live("click", function(){
 console.log("Changed");
});

$("#EmployeeId")$(tar)之间有什么区别?我的印象是两者之间没有区别。而且,当我尝试

console.log($(tar));
console.log($("#EmployeeId"));

同样的事情发送到控制台。

我缺少什么,有什么不同,为什么一种方法没有附加事件处理程序?

1 个答案:

答案 0 :(得分:2)

.live需要使用选择器,因为它将事件处理程序绑定到document,然后测试事件的原点(或路径中的任何元素)是否与选择器匹配。

如果没有提供选择器,它将无法工作。这就是为什么链接像$('foo').children().live(..)这样的方法也不起作用的原因。

自jQuery 1.7起,.live由于其文档中列出的各种原因而被弃用:http://api.jquery.com/live/

替代方案是.on(1.7)和.delegate(1.4.2)。