2011-01-12 3 views
0

Нужно ли использовать вторую строку здесь?Анализ XML с помощью jQuery

$("message",xml).each(function(id) { 
    message = $("message",xml).get(id); 
    msgID = $("msgID",message).text(); 

Не существует ли какое-либо ключевое слово 'this' для устранения второй строки?

Спасибо!

ответ

3
$('message', xml).each(function() { 
    var msgID = $(this).find('msgID').text(); 
} 

Предполагая эту структуру:

<root> 
    <message> 
     <msgID>123</msgID> 
    </message> 
    <message> 
     <msgID>234</msgID> 
    </message> 
    <message> 
     <msgID>345</msgID> 
    </message> 
</root> 
+0

Можете ли вы просто написать this.find, не используя символ jQuery и круглые скобки? –

+0

@Michael Нет, потому что ключевое слово this this относится к объекту узла XML (или как его имя), но 'find()' является методом jQuery и может быть вызван только для объектов jQuery. –

+0

хорошо, это хорошая практика, чтобы захватить '$ (this)' в переменной. Подобно 'var $ this = $ (this);' ... – Reigel

1

Когда вы в an .each(), this будет представлять текущий элемент в итерации.

.each() также дает вам 2 параметра. Первый - это текущий номер индекса итерации, а второй - элемент на итерации, такой же, как this.

$("message",xml).each(function(idx, val) { 
    // in here, "this" is the current "message" node in the iteration 
    // "i" is the current index in the iteration 
    // "val" is the same as "this" 
}); 

Когда вы $("message",xml), вы ищете "message" узлов, вложенную под узлами в верхней части xml. Если они были найдены, .each() будет перебирать их.

Смежные вопросы