jQuery - динамически используя '.filter' для вновь добавленных объектов DOM - PullRequest
0 голосов
/ 23 сентября 2011

Я использую шаблонизатор jQuery для добавления динамических элементов DOM (в частности, DIV).Для управления ими я использую метод «live» (например, для событий «click»).

В какой-то момент мне нужно найти некоторые вновь созданные элементы, используя метод «filter».Кажется, что он не найдет вновь созданные элементы.

Есть идеи, почему?

Мой код состоит из таких DIV с различными атрибутами data-setid.Они генерируются с помощью плагина jQuery .tmpl.

Я использую селектор, чтобы найти соответствующий DIV «ListOfStuff» и добавить, добавьте к нему новый DIV «Stuff».

Так чтоработать с такими 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');

1 Ответ

0 голосов
/ 23 сентября 2011

Я не думаю, что вам нужен фильтр, вы можете попробовать это:

$("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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...