我正在使用jQuery模板引擎添加动态DOM元素(特别是DIV)。为了控制它们,我使用“实时”方法(例如“点击”事件)。
在某些时候,我需要使用'filter'方法找到一些新创建的元素。它似乎找不到新创建的元素。
任何想法为什么?
我的代码由具有不同数据setid属性的此类DIV组成。它们是使用jQuery .tmpl插件生成的。
我正在使用选择器找到合适的“ListOfStuff”DIV并添加一个新的“Stuff”DIV。
因此它可以在服务器上生成然后提供的DIV上运行,但不会对新创建的DIV起作用。
<div class="SomeStuffSet" data-setid="MySetID">
-- some stuff here --
<br /><br />
<div class="ListOfStuff">
<div class="Stuff">
My Name
</div>
<div class="Stuff">
My Name
</div>
<div class="Stuff">
My Name
</div>
</div>
</div>
我的选择器是这样的:
var setdiv = $('div').filter('.SomeStuffSet').filter(function () { return $(this).attr('data-setid') == $('#currentSetID').val(); }).children('.ListOfStuff');
答案 0 :(得分:0)
我认为你不需要过滤器就可以试试这个:
$("div.SomeStuffSet[data-setid='" + $("#currentSetID").val() + "'] > div.ListOfStuff");
关于你的评论:
我相信你正在努力做到这一点
var setdiv = $("div.SomeStuffSet[data-setid='" + $("#currentSetID").val() + "'] > div.ListOfStuff");
//Code to append newly created object
//...
console.log(setdiv); // My assumption is that you believe setdiv should contain newly created object. This is not correct
//repopulate setdiv with newly create objects
setdiv = $("div.SomeStuffSet[data-setid='" + $("#currentSetID").val() + "'] > div.ListOfStuff");
console.log(setdiv) //now setdiv with contain newly created objects.