2011-09-22 58 views
0

我使用jQuery模板引擎添加動態DOM元素(特別是DIV)。爲了控制它們,我使用'實時'方法(例如'點擊'事件)。jQuery - 在新添加的DOM對象上動態使用'.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

我不認爲你需要一個過濾器,你可以試試這個:

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

謝謝 - 代碼更好:)但仍然沒有解決實時過濾的問題。它不會找到新創建的對象... – Roman

+0

對不起。它工作!謝謝:) – Roman

+0

@roman ...如果你永遠不會重新填充你的變量setdiv,那麼它不會有新創建的對象。看到我的回答 –