2012-03-22 22 views
1

我有以下structered DOM結果,POST事件後得到:選擇值

<root> 
    <config> 
     // Some inner tree 
    </config> 
    <test> 
    <test testValue="0"> 
     <id>90</id> 
     <time>false</time> 
     <config> 
     <config1>1</config1> 
     </config> 
     <languages> 
     <language id="en" isDefault="true" > 
      <test22 text="" /> 
      <test23 text="" /> 
     </language> 
     </languages> 
     <answers> 
     <answer> 
      <id>201</id> 
      <Texts> 
      <Text localeId="en" Text="Yes" /> 
      </Texts> 
     </answer> 
     <answer> 
      <id>202</id> 
      <Texts> 
      <Text localeId="en"Text="No" /> 
      </Texts> 
     </answer> 
     </answers> 
    </test> 
    </test> 
</root> 

以上DOM返回調用$不用彷徨後(URL,功能(XML) ),我可以做到這些:

使用以下代碼獲取文本(是,否)和id(201,202)。

$(XML).find("answer").each(function(){ 
     var textValue = $(this).find("Text").attr("Text"); 
     var idValue = $(this).find("id").text(); 
    }); 

但我找不到正確的組合以獲得id(90)例如以下沒有工作:

$(XML).find("test").children().attr("id"); 

調試jquery是相當令人沮喪的。我安裝了firefox插件,firequery,並將DOM保存到一個帶有html擴展名的文件中,但是Firequery不允許我鏈接像$ .find(「id」).text();這樣的函數。 。用jquery從DOM獲取id值90的方法是什麼?在處理DOM和XML文件(如代碼片段)時,你用什麼來調試jQuery?

+0

嘗試:'$(XML).find( 「測試」)兒童()找到( 「測試」)找到( 「ID」)文本();' – mgraph 2012-03-22 13:07:50

+1

。。你有一個包含其他'test'節點的'test'節點 - 我不確定它是否是無效的XML(因爲XHTML允許這樣的事情),但這對於結構化數據來說肯定是不好的做法。 – Blazemonger 2012-03-22 13:08:07

回答

0

id不是一個屬性,而是一個元素,所以你應該選擇它,就像你選擇text。要獲得90,請在id元素上請求.text()

$(XML).find('test').children('id').text(); 

http://jsfiddle.net/Mikey/FjnTS/

+0

我想出瞭如何使用Firebug + Firequery進行調試。因此,這是獲得90:$(XML).find(「test」),find(「id」)。first()。text()的答案。這也可能是$(「test」,XML).find(「id」)first()。text()。人們說他們的性能比較不同,但我無法在Firebug控制檯中創建兩個find()鏈,並且在jsfiddle中有三個選擇器篩選器。感謝jsfiddle鏈接! – baris 2012-03-22 16:18:15

0

「ID」是不是一個節點的屬性,這是一個節點的內容。嘗試搜索testValue="0"

$idnode = $('test[testValue="0"]').find('id'); // a jQuery object 
idvalue = $idnode.text(); // the string "90" 
idnumber = parseInt(idvalue,10); // the number 90