之前已经问过这个问题,答案是这样的:
$('#container').on('click','#dynamicElement', function(){ /* the code */ });
上面的代码会在点击时找到#dynamicElement
。
但是,如果没有点击,也没有任何其他事件呢?
假设以下情形:
$.ajax(
url:'file.php',
data: {'param':'value'},
success: function(response){
/*
how would I get #dynamicElement if it was not click on?
the element had no event fired at all, nor had any of its parennt
containers.
Now what?
*/
}
);
答案 0 :(得分:3)
如果要将新元素添加到success
回调中的页面,
此时,您可以拨打$('#dynamicElement')
在回调之外的任何地方使用$('#dynamicElement')
都不会返回该元素,因为它尚未添加到DOM中。
答案 1 :(得分:0)
事件绑定的工作原理只要该元素在DOM本身中,您就可以通过
访问它$('#dynamicElement)
您需要事件委派的原因是在绑定事件后动态创建元素。然后,当事件被触发时,它会查看绑定它的元素的所有子元素,以查找是否有与您的选择器匹配的元素。
但是,如果您知道该元素已经附加到DOM,则可以直接绑定它而不进行事件委派,并通过ID查找它来访问它。
如果还没有,你就无法操纵它,因为它还不存在。