2012-11-08 2 views
-1

만약 내가 다음과 같은 성공 기능 아약스 호출이없는 경우 선택을 포함하는 것 :JQuery와 형제()이 형제하지만하지

응답이 장고 템플릿을 사용하여 HTML을 렌더링
  success: function(response){ 
       console.log($(response).siblings()); 
       $(response).siblings().each(function(){ 
        alert("foo"); 
        var thing_id = $(this).attr("id").split("-")[0]; 
        alert(thing_id); 
        $("#"+thing_id).append(this); 
       }) 

(약간 익명) : 선택기가 난 단지 내 템플릿에 하나 thing in things이있는 경우 내가 볼,하지만 난 더 이상이있는 경우, 나는 모두 최고 수준을 무엇을 얻을 인 포함되지 않은 것을 형제에 대한

{% for thing in things %} 
    <div id="{{ thing.something.id }}-pc"> 
     <div> 
      <span class="tablename">Something Else</span> 
      {% include '<some template>' with table=thing.something_else %} 
     </div> 

    </div> 
{% endfor %} 

워드 프로세서() 상태 divs가 루프에서 경고했습니다.

무슨 일 이니?!

EDIT (더 나은 질문) : 2있을 때 왜 모두 최고 수준의 div가 무엇입니까하지만 0 내가 $(response)siblings()를 호출 할 때, 단 1 있는가?

내가 선택한 내용을 오해하고있는 것 같습니다. $(response). 누구든지 명확히 할 수 있습니까?

+0

무엇을 기대합니까? '형제 '는 모든 형제를 데려 갈 것이지만'형제 ('클래스 ')' – elclanrs

+0

클래스를 사용하여 필터링 할 수 있습니다. 어떤 일이 일어나기를 바란다면 – charlietfl

+0

잘 편집 해주세요. 두 최상위 div가 있다면'.siblings()'을 요청할 때 ($ (응답)이 첫 번째 것을 가리키고 있기 때문에 형제 만 얻을 수 있기 때문에) 한 가지를 얻을 것이라고 기대하고 있습니다. . 그러나 실제로는 두 가지가 있습니다. – Colleen

답변

1

"그래서 나는$(response)을 말할 때 무엇을 선택하고 무엇입니까?" 당신에게 당신의 response 문자열에서 최상위 요소의 모든을 포함하는 jQuery를 객체를 제공

. 예를 들어 3 개의 최상위 요소가 있다면 $(response).length3이됩니다.

은 모든 최상위 요소의 모든 형제를 제공하며, 각 요소는 다른 요소의 형제이기 때문에 모든 최상위 요소를 다시 반환합니다.

최상위 요소가 하나 뿐인 경우 형제가 없습니다.

분명히 .siblings()은 여기에서 사용하는 방법이 잘못되었지만 원하는 결과가 여전히 불분명하기 때문에 대신 무엇을 사용해야하는지 조언하지는 못합니다.

할 수 있습니다 각 최상위 요소를 통해 루프 :

$(response).each(function() {... 

당신이 .eq(someZeroBasedIndex)은, 예를 들면, $(response).eq(1) 두 번째를 얻을하는 데 사용할 수있는 특정 하나를 얻을 수 있습니다.

첫 번째 것을 제외하고 모두 얻으려면 $(response).slice(1)을 사용할 수 있습니다.

+0

이상하게도, 최상위 레벨이 2 개일 때,'$ (response) .each() '는 세 가지를 제공합니다. 중간에 "텍스트"노드가있는 두 개의 div가 있습니다. 그게 뭐야? – Colleen

+0

소스 문자열의 요소 사이에 텍스트가 있습니까? '$ (response) .filter ("div"). each (...)'로 최상위 수준 div를 얻을 수 있습니다. – nnnnnn

+0

그건 이상한 일입니다. 제 템플릿에서 볼 수 있듯이 요소들 사이에 텍스트가 없습니다. 나는 필터를 시험 할 것이다, 고마워. – Colleen