它会影响所有li .subnav元素,我如何只访问子元素?

时间:2013-06-06 09:58:42

标签: jquery

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

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

6 个答案:

答案 0 :(得分:0)

$(".left_navigation ul li > .sub_nav").slideToggle("slow");

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

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

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

this表示触发click事件的DOM节点,.find('.sub_nav')使用类sub_nav

搜索该节点的后代

答案 4 :(得分:0)

试试这个:

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

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

答案 5 :(得分:0)

$('.left_navigation ul li').click( function () {
    $(this).find(".sub_nav").slideToggle("slow");
});