-1

我不知所措。

.html() 返回一个字符串,并且

$( "<div></div>" )

从 html 创建一个节点。

那么谁能解释我为什么以下会返回错误消息?

<!DOCTYPE html>
<html>
    <head>
        <script src="/js/jquery-1.9.1.min.js"></script>
        <script>
            $( document ).ready(
                function() {
                    var html = $( "ul.menu" ).html();
                    var test = $( html );
                }
            );
        </script>        
    </head>
    <body>
        <ul class="menu">
            <li><a href="">Button 1</a></li>
            <li><a href="">Button 2</a></li>
            <li><a href="">Button 3</a></li>
            <li><a href="">Button 4</a></li>
            <li><a href="">Button 5</a></li>
        </ul>
    </body>
</html>
4

2 回答 2

1

很好

var html = $( "ul.menu" ).html();

您将在菜单中获得所有 li,但是当您将其包装在 jquery 中时,您没有一个元素,而是所有元素!

尝试循环遍历每个<li>元素并在单个元素上执行您需要的操作

看看这个小提琴的一些起始行来循环 li 集合:http: //jsfiddle.net/Ge22N/1/

如果您想将 li 节点添加到 ul,请查看:http: //jsfiddle.net/Ge22N/3/

于 2013-06-12T10:03:53.790 回答
0

if you are expecting var test to be the entire <ul> you should do something like this:

var html = $( "ul.menu" ).html();
var test = $("<ul />", { html: html );

See also this fiddle:

EDIT:

I think you have a point indeed. I checked your fiddle and changed it into a piece of html without linebreaks (see here). If there are no line breaks in the HTML your code works perfectly. Probably jQuery cannot create nodes when linebreaks exist in the HTML string.

于 2013-06-12T10:13:32.130 回答