我要在单击按钮时将从ajax调用返回的HTML部分附加到代码中的div元素中。
然后,我想通过jQuery访问那些id / class选择器。
例如....
基本HTML
<div id="codeToGoHere"></div>
First Button OnClick事件调用ajax事件:
ajaxReturns - "<div id='thisDiv'>blah blah</div><div id='thatDiv'>blah blah</div>"
$("#codeToGoHere").append(ajaxReturns);
第二个按钮的OnClick事件:
$("#thisDiv").css("border", "1px solid red");
这是行不通的,我想是因为加载DOM时附加的代码不可用。有没有一种方法可以让DOM在更改后得到重新评估,以确保我可以绑定到出现的新元素?
或者...可能是一个更好的问题,是“我如何进行这项工作?”!
谢谢 :-)
最佳答案
正如您已经怀疑的那样,加载页面时会在以后添加div而不是将其添加到DOM中,因此您必须使用事件委托附加click-event:
$(document).on("click", "#thisDiv", function(){
$(this).css("border", "1px solid red");
});
由于您的问题中没有按钮,因此我仅在附加div上设置了点击事件,假设您还附加了按钮。
代替
$(document)
的任何静态父元素都可以用作容器元素来委托事件。因为应该避免在Stackoverflow上复制/粘贴(甚至从自己的答案中复制/粘贴)-我已经用类似的问题here回答了这个问题,并提供了更多有关事件委托的信息和jquery参考。