2011-09-22 2 views
0

저는 동적 DOM 요소 (특히 DIV)를 추가하기 위해 jQuery 템플릿 엔진을 사용하고 있습니다. 그들을 제어하기 위해 나는 '라이브'방법 (예 : '클릭'이벤트)을 사용합니다.jQuery - 새로 추가 된 DOM 객체에 '.filter'를 동적으로 사용합니다.

어떤 시점에서 필자는 '필터'방법을 사용하여 새로 생성 된 요소를 찾아야합니다. 그것은 새로 만든 요소를 ​​찾지 못할 것 같습니다.

왜 그런가?

내 코드는 다른 데이터 집합 속성이있는 DIV로 구성됩니다. jQuery .tmpl 플러그인을 사용하여 생성됩니다.

나는 적절한 "ListOfStuff"DIV를 찾고 그에게 새로운 "항목"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을 다시 채우지 않으면 새로 만든 객체가 생기지 않습니다. 내 대답을보십시오 –

관련 문제