2011-02-27 4 views
0

jQuery로 추가 한 객체가 표시되지 않습니다?

내 jQuery를 내가 jQuery를 새로운 오전, 나는 기존 사업부에 새로운 요소를 추가하려고 :

function GetXML1Response(results) { 
     $(results).filter("Child").each(function() { 
      var newDiv = $("<div>").text("Value: " + $(this).attr("value")); 
      $("#contentDiv").append(newDiv); 
     }); 
    } 

내 HTML :

<div id="contentDiv"> 
     <div>TEST 1</div> 
    </div> 

나는 그것을 보면 디버거를 사용하면 예상대로 새 div가 추가되지만 나타나지는 않으며 다음 호출에서는 사라집니다.

도움을 주시면 감사하겠습니다.

편집 :

어디에서 문제가 발생하는지 알 수 있습니다. 이 함수는 WebMethod에 대한 콜백으로 트리거됩니다. 나는 그것이 다른 스레드에서 일어날지도 모른다고 의심하고, 따라서 변경 사항이 손실되고 있습니까?

+0

내 페이지의 HTML이 디버거가보고하는 것을 보여줄 수 있습니까? –

+0

http://jsbin.com/에서 코드를 입력하십시오. – mozillanerd

+0

사용해보기 : http://jsbin.com/ahanu5/edit 잘못 입력하면 죄송합니다. – Sako73

답변

1

Child 노드가 중첩되어 있기 때문에 filter()[docs] 메서드 대신 find()[docs] 메서드 또는 children()[docs] 메서드를 사용해야합니다. 당신은 잘못 .filter을 사용하고

$(results).find("Child").each(... // searches all descendants 

또는

$(results).children("Child").each(... // searches only immediate descendants 
+0

.filter 호출은 노드를 반환하지만 .find 및 .children 메서드는 노드를 반환하지 않습니다. .filter 메서드를 사용하면 자식 목록을 올바르게 반복하고 새 DIV를 올바르게 추가하지만 함수가 종료 되 자마자 사라집니다. 그것은 무언가가 범위를 벗어나는 것과 같습니다. – Sako73

+0

@ Sako73 : 당신의 jsbin이 그들을 자손으로 보였습니다. 어쨌든 코드를 트리거하는 것은 무엇입니까? 링크를 클릭하고 있습니까? – user113716

0

, 당신은 .find 원하는 :

function GetXML1Response(results) { 
    $(results).find("Child").each(function() { 
     var newDiv = $("<div>").text("Value: " + $(this).attr("value")); 
     $("#contentDiv").append(newDiv); 
    }); 
} 

당신은 .filter 하나의 <rootElement>를 전달하고 그 외설 모든 필터링 요구하고 ' t <Child>이면 결과는 빈 목록입니다. 만약 당신이 .find과 동일하게한다면 .find<rootElement>을주고 그 안에 포함되어있는 모든 요소를 ​​추출하도록 요청할 것입니다.

0

음, 알아 냈습니다. 전혀 jQuery가 아닙니다. HTML 단추가 있었는데 자동으로 다시 게시를하고있었습니다. 내가 함수를 호출 한 후

return false; 

을 추가하면 예상대로 작동합니다.

도움 주셔서 감사합니다.

+0

그래, 나는 그것이 링크 였음에 틀림 없다고 생각했다. 깨진 것으로 보이는 가장 좁은 부분 대신 코드의 전체 그림을 게시하는 경우 매우 유용합니다. :영형) – user113716

관련 문제