Я преобразовал текстовые данные в объект jquery, но созданный не был тем, что я ожидал

Я хочу преобразовать текстовые данные в объект jquery и хочу использовать метод find() или метод filter() или некоторые другие методы, которые jquery имеет. Но каким-то образом, innerHtml преобразованного объекта jquery не то, что я ожидал. Я хочу знать, что происходит. http://jsfiddle.net/LxXtz/14/

<div id="parts">
 <div id="div1">
 <div>This is in Div1</div>
 </div>
 <div id="div2">This is Div2</div>
</div>
4 ответа

Вы получаете ниже от $('#parts').html()

<div id="div1">
 <div>This is in Div1</div>
</div>
<div id="div2">This is Div2</div>

Затем, когда вы конвертируете его в объект jquery, он превращается в массив, содержащий 3 элемента,

Object[div#div1, <textnode textcontent="\n ">, div#div2]
</textnode>

Поэтому использование .html() дает только первый элемент innerHTML. Это

<div>This is in Div1</div>

Проверьте это http://jsfiddle.net/LxXtz/16/. Проверьте консоль.


http://api.jquery.com/html/ заявляет:

"Описание: Получить содержимое HTML первого элемента в наборе согласованных элементов." "Если выражение селектора совпадает с более чем одним элементом, только первое совпадение будет возвращено его HTML-содержимому".

Ваш partsobj соответствует 3 записям; div, textnode, div. Один из способов его решения - проложить через них каждый.

partsobj.each(function(){
 if($(this).html())
 $('#result').text($('#result').text()+$(this).html())
})


var parts = $('#parts').children(); 
console.log(parts);

который даст вам массив элементов html. Если вам нужен сырой html этих элементов для детей.

var parts = $('#parts').children(); 
$.each({parts, function() {
 console.log($(this).html());
});


поэтому вы хотите html выполнения div#execution, а затем вставить его в div#result. если вы хотите переместить его, тогда

$('#execution').on('click', function () {
 $('#result').append($('#parts').html())
});

ты это имеешь ввиду?

licensed under cc by-sa 3.0 with attribution.