1

我有以下标记:

<ul>
    <li>
        <a href="#"><img src="sample-big-product.png" alt="" title="" /></a>
        <span><a href="#">View Product</a></span>
        <ul><li>1,2,3</li></ul>
            <h2>Featured product name</h2>
        <p>Lorem ipsum dolor sit amet, cosetur adispci elit. Morbi poseure ante porta justo...</p>
    </li>

    <li>
        <a href="#"><img src="sample-big-product.png" alt="" title="" /></a>
        <span><a href="#">View Product</a></span>
            <ul><li>1,2,3</li></ul>
        <h2>Featured product name</h2>
        <p>Lorem ipsum dolor sit amet, cosetur adispci elit. Morbi poseure ante porta justo...</p>
    </li>
    <li>
        <a href="#"><img src="sample-big-product.png" alt="" title="" /></a>
        <span><a href="#">View Product</a></span>

        <h2>Featured product name</h2>
        <p>Lorem ipsum dolor sit amet, cosetur adispci elit. Morbi poseure ante porta justo...</p>
    </li>
    <li>
        <a href="#"><img src="sample-big-product.png" alt="" title="" /></a>
        <span><a href="#">View Product</a></span>

        <h2>Featured product name</h2>
        <p>Lorem ipsum dolor sit amet, cosetur adispci elit. Morbi poseure ante porta justo...</p>
    </li>
</ul>

这是我的 jquery,所以在这里我针对所有 LI 和所有 UL。但我只想针对 ul li 而不是 ul li ul li

// get all available UL and LI elements...
var li_elements = container.find("LI").clone();

// remove the current content so that we can rebuild it for the slider...
container.find("UL").remove();

ps 显然我可以简单地将 .class 添加到它们。但我不想让标记复杂化......

4

4 回答 4

2

使用>“直接子代”选择器。假设container是一个引用顶级父元素的 jQuery 对象ul,这应该可以工作:

var li_elements = container.find("> ul > li").clone();
container.find("> ul").remove();
于 2012-12-13T09:01:11.167 回答
0

如果您只想选择 的直接后代ul,请使用该.children方法(假设containerul元素)

container.children("li");

如果只想选择包含其他无序列表的无序列表,可以使用:has()选择器(假设container是 的祖先ul

container.find("ul:has(ul)");
于 2012-12-13T09:01:42.833 回答
0

Sandro,如果你只想要第一次出现的 ul li 而跳过其余的,那么使用“first()”,例如 .var li_elements = container.find("LI").first() //这给了你第一个 li

有关更多信息,请参阅http://api.jquery.com/first/

于 2012-12-13T09:04:48.697 回答
0

我不知道你想要实现什么,但据了解,我创建了一个小提琴:

http://jsfiddle.net/AFM2P/

在这个小提琴中,我有 created a hover eventremoved the direct children of the hovered ul

( i guess you want to achieve something like this)

这是我尝试过的:

$('ul:first').hover(function(){
    $('ul',this).remove(); //<---------This will remove the child ul 
});                        //           of the hovered ul
于 2012-12-13T09:31:56.560 回答