【问题标题】:jQuery - dynamically using '.filter' on newly added DOM objectsjQuery - 在新添加的 DOM 对象上动态使用“.filter”
【发布时间】:2011-09-22 21:21:17
【问题描述】:

我正在使用 jQuery 模板引擎来添加动态 DOM 元素(特别是 DIV)。为了控制它们,我使用“实时”方法(例如,用于“点击”事件)。

有时我需要使用“过滤器”方法找到一些新创建的元素。好像找不到新创建的元素。

有什么想法吗?

我的代码由具有不同 data-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');

【问题讨论】:

    标签: javascript jquery jquery-selectors


    【解决方案1】:

    我认为你不需要过滤器,你可以试试这个:

    $("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.
    

    【讨论】:

    • 谢谢 - 代码做得更好:) 但仍然没有解决实时过滤的问题。它不会找到新创建的对象...
    • @roman...如果你从不重新填充你的变量 setdiv 那么它不会有新创建的对象。看我的回答
    • @roman....不要忘记接受答案。记得参与这个伟大的网站!
    • 感谢您的出色回答。只需要等待网站允许我接受答案。确实 - 一个很棒的网站!
    猜你喜欢
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 2016-02-08
    • 2013-07-01
    • 1970-01-01
    相关资源
    最近更新 更多