为什么这段代码不起作用?
jQuery(".ui-accordion-header").on("click", function(event){ ... }
这个有用吗?
jQuery(document).on("click", ".ui-accordion-header", function(event){ ... }
谢谢。
答案 0 :(得分:2)
第一行仅在dom中已存在.ui-accordion-header
时才有效。有时,元素会动态创建并插入到dom中。在这种情况下,侦听器不会绑定到新创建的元素。
第二种方式起作用的原因是因为听众被绑定在document
级别。因此,只要在文档中进行任何新的更改,侦听器仍然是绑定的。
答案 1 :(得分:1)
当您调用jQuery(".ui-accordion-header")
时,jQuery会将该方法分配给加载时存在的所有对象(加载页面时)。因此,如果在设置页面时具有类名ui-accordion-header
的对象不是DOM元素,则不会将该方法分配给它。
jQuery(document)
会将其分配给文档,只要点击.ui-accordion-header
,该文档就会响应。基本上,如果它是一个DOM对象,将在页面加载后的某个时间创建,请坚持使用jQuery(document)
方法。顺便问一下,为什么不使用$
?例如,$(document)
,$(".ui-accordion-header")
等