2011-02-27 49 views
0

我是新來的jQuery,我試圖以新的元素添加到現有的div我用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是你的調試器報告的嗎? – 2011-02-27 01:29:43

+0

給我們的代碼在http://jsbin.com/ – mozillanerd 2011-02-27 01:38:01

+0

試試這個:http://jsbin.com/ahanu5/edit 對不起,如果我輸入不正確。 – Sako73 2011-02-27 02:06:54

回答

1

因爲Child節點是嵌套的,所以應該使用find()[docs]方法或children()[docs]方法而不是filter()[docs]方法。

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

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

.filter調用確實會返回節點,.find和.children方法不會。當我使用.filter方法時,它正確地遍歷子列表,並正確添加新的DIV,但只要函數退出,它們就會消失。這就像有些東西超出了範圍。 – Sako73 2011-02-27 03:00:48

+0

@ Sako73:你的jsbin將它們表現爲後代。無論如何,觸發代碼是什麼?你點擊鏈接? – user113716 2011-02-27 03:23:10

0

您使用.filter不正確,你想.find

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

你遞過.filter<rootElement>,並要求它過濾掉一切ISN」 t <Child>,結果是一個空的列表。如果你對.find也這樣做,那麼你會給.find<rootElement>,你要求它提取它包含的所有元素(這就是你想要發生的)。

0

嗯,我想通了。根本不是jQuery。我有一個HTML按鈕,它自動進行回發。當我加入

return false; 

函數調用後,它按預期工作。

謝謝大家的幫助。

+0

是的,我覺得它一定是一個鏈接。如果您發佈代碼的完整圖片,而不是看起來被破壞的最窄部分,這非常有幫助。 :O) – user113716 2011-02-27 13:54:38