0

我想将文本数据转换为 jquery 对象,并想使用 'find()' 方法或 'filter()' 方法或 jquery 具有的其他一些方法。
但不知何故,转换后的 jquery 对象的 innerHtml 不是我所期望的。
我想知道发生了什么。
http://jsfiddle.net/LxXtz/14/

<!DOCTYPE html>
<html>
<head>
    <script src="lib/jquery-2.0.3.min.js"></script>
    <style type="text/css">
    <!--
    #parts{
        display: none;
    }
    -->
    </style>
    <script>
        $(function () {
            $('#execution').on('click', function () {
                var parts = $('#parts').html(); //Parts is text data. I create the data from html just for this demo.
                var partsobj = $(parts); // Convert to jQuery object.
                console.log(partsobj.html()); // Why not be outputted innerHtml of #parts??
            });
        });

    </script>
</head>
<body>
<input type="button" id="execution" value="Execute" />
<div id="parts">
    <div id="div1">
        <div>This is in Div1</div>
    </div>
    <div id="div2">This is Div2</div>
</div>
</body>
</html>
4

4 回答 4

2

你从下面得到$('#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]

所以使用.html()只给出第一个元素innerHTML。那是

<div>This is in Div1</div> 

检查这个http://jsfiddle.net/LxXtz/16/。检查控制台。

于 2013-09-27T05:55:02.917 回答
1

http://api.jquery.com/html/状态:

“描述:获取匹配元素集中第一个元素的 HTML 内容。” “如果选择器表达式匹配多个元素,则只有第一个匹配项才会返回其 HTML 内容。”

您的 partsobj 匹配 3 个条目;div,文本节点,div。解决它的一种方法是循环遍历它们。

partsobj.each(function(){
    if($(this).html())
        $('#result').text($('#result').text()+$(this).html())
})
于 2013-09-27T05:52:52.413 回答
0
var parts = $('#parts').children(); 
console.log(parts);

这将为您提供一个 html 元素的数组。如果您想要这些子元素的原始 html。

var parts = $('#parts').children(); 
$.each({parts, function() {
    console.log($(this).html());
});
于 2013-09-27T05:55:27.847 回答
0

所以你想要 的 html div#execution,然后将其插入div#result. 如果你想移动它

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

你是这个意思吗?

于 2013-09-27T05:59:55.150 回答