1

它影响所有 li .subnav 元素,我如何才能访问仅子元素?

$("#left_content").on('click', '.left_navigation ul li', function () {
    $(".left_navigation ul li .sub_nav").slideToggle("slow");
}); 
4

6 回答 6

0
$(".left_navigation ul li > .sub_nav").slideToggle("slow");
于 2013-06-06T10:00:47.100 回答
0

如果您需要 li 下的 sub_navs,请执行以下操作:".left_navigation ul li > .sub_nav"

于 2013-06-06T10:01:43.293 回答
0

最简单和最快的方法是只引用被点击的东西中的子项。this将引用被单击的项目,因此将其作为第二个参数传递给$()将仅查询嵌套在该项目中的元素<li>

$("#left_content").on('click', '.left_navigation ul li', function () {
    $('.sub_nav', this).slideToggle("slow");
});

如果人们不熟悉该语法,则调用与调用 fwiw相同$(selector, this)$(this).find(selector)

于 2013-06-06T10:02:48.580 回答
0

如果没有看到您的标记,很难给出准确的答案,但听起来您只需要使用this来切换相关的.sub_nav

$(this).find('.sub_nav').slideToggle('slow');

this表示触发click事件的 DOM 节点,并.find('.sub_nav')使用类搜索该节点的后代sub_nav

于 2013-06-06T10:03:33.770 回答
0

尝试这个:

$("#left_content").on('click', '.left_navigation ul li', function () {
    $(this).children('.sub_nav').slideToggle("slow");
});

.children( )方法与.find()的不同之处在于 .children( ) 仅沿 DOM 树向下移动一个级别,而 .find() 也可以向下遍历多个级别以选择后代元素(孙子等)。

于 2013-06-06T10:03:43.863 回答
0
$('.left_navigation ul li').click( function () {
    $(this).find(".sub_nav").slideToggle("slow");
}); 
于 2013-06-06T10:03:51.050 回答