例如:
$("myElement").click(function(){
alert("Clicked!");
};
#myElement
是否已被修改,onclick
属性设置,或者jQuery是否只设置了一个监听器?
答案 0 :(得分:3)
click()
函数不更改任何DOM属性。
它为该特定的jQuery元素添加了一个监听器。
同样适用于.change(), .keyup(), ...
等。
答案 1 :(得分:0)
如果使用.click();
答案 2 :(得分:0)
它不会修改元素。
jQuery() - 也可以写成$() - 搜索DOM 对于与提供的选择器匹配的任何元素,并创建一个新元素 引用这些元素的jQuery对象
答案 3 :(得分:0)
查看jQuery 1.6.2源代码:
$("myElement").click(...) calls: $("myElement").bind('click', ...)
which then calls: jQuery.event.add(...)
which ultimately does either elem.addEventListener(...) or elem.attachEvent(...)
因此,我们可以肯定地说它没有设置onclick
属性(这是我们所期望的,因为addEventListener更具可扩展性)。
但是,当我逐步执行.click()函数时,将一个属性 添加到DOM对象中。它与jQuery的数据函数有关,它在jQuery的数据函数中的这段代码中,它是从event.add(...)
调用的。它看起来像jQuery用来跟踪哪个对象而不保留DOM引用(可能导致内存泄漏)的某种guid标识符。添加该属性的代码位于:
if ( !id ) {
// Only DOM nodes need a new unique ID for each element since their data
// ends up in the global cache
if ( isNode ) {
elem[ jQuery.expando ] = id = ++jQuery.uuid;
} else {
id = jQuery.expando;
}
}
因此,总而言之,jQuery没有触及.onclick
属性,但是在设置第一个事件处理程序时,它在DOM对象上至少设置了一个其他属性。