Javascript jQuery-查找动态创建的元素而不包含事件
这个问题以前被问过,答案是:Javascript jQuery-查找动态创建的元素而不包含事件,javascript,jquery,html,ajax,dynamically-generated,Javascript,Jquery,Html,Ajax,Dynamically Generated,这个问题以前被问过,答案是: $('#container').on('click','#dynamicElement', function(){ /* the code */ }); 上面的代码将在单击时找到#dynamicacelement。 但如果没有点击,也没有任何其他事件呢 假设以下场景: $.ajax( url:'file.php', data: {'param':'value'}, success: function(response){
$('#container').on('click','#dynamicElement', function(){ /* the code */ });
上面的代码将在单击时找到#dynamicacelement
。
但如果没有点击,也没有任何其他事件呢
假设以下场景:
$.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?
*/
}
);
如果将新元素添加到
success
回调中的页面,
此时,您可以调用$(“#dynamicacelement”)
在回调之外的任何地方使用
$(“#dynamiccelement”)
都不会返回该元素,因为它尚未添加到DOM中。事件绑定的工作原理是只要该元素位于DOM中,就可以通过
$('#dynamicElement)
需要事件委派的原因是在绑定事件后动态创建元素时。然后,当事件被触发时,它会查看绑定到的元素的所有子元素,以查找是否有任何元素与选择器匹配
但是,如果您知道元素已经附加到DOM中,则可以直接绑定它,而无需事件委派,并通过按ID查找来访问它
如果还没有,您就无法操作它,因为它还不存在。看起来您希望使用普通的jquery选择器
$(“#dynamiccelement”)
来获取成功回调中的元素,我想这和$(“#dynamiccelement”)一样简单。
,我一直避免这样做,好像我知道那是行不通的谢谢。想解释一下为什么会这样吗?我假设正在将#dynamiccelement
添加到success函数的页面中。基本上可以归结为这样一个事实:一旦元素存在于DOM中,就需要查询它。