它影响所有 li .subnav 元素,我如何才能访问仅子元素?
$("#left_content").on('click', '.left_navigation ul li', function () {
$(".left_navigation ul li .sub_nav").slideToggle("slow");
});
它影响所有 li .subnav 元素,我如何才能访问仅子元素?
$("#left_content").on('click', '.left_navigation ul li', function () {
$(".left_navigation ul li .sub_nav").slideToggle("slow");
});
$(".left_navigation ul li > .sub_nav").slideToggle("slow");
如果您需要 li 下的 sub_navs,请执行以下操作:".left_navigation ul li > .sub_nav"
最简单和最快的方法是只引用被点击的东西中的子项。this
将引用被单击的项目,因此将其作为第二个参数传递给$()
将仅查询嵌套在该项目中的元素<li>
$("#left_content").on('click', '.left_navigation ul li', function () {
$('.sub_nav', this).slideToggle("slow");
});
如果人们不熟悉该语法,则调用与调用 fwiw相同$(selector, this)
。$(this).find(selector)
如果没有看到您的标记,很难给出准确的答案,但听起来您只需要使用this
来切换相关的.sub_nav
:
$(this).find('.sub_nav').slideToggle('slow');
this
表示触发click
事件的 DOM 节点,并.find('.sub_nav')
使用类搜索该节点的后代sub_nav
尝试这个:
$("#left_content").on('click', '.left_navigation ul li', function () {
$(this).children('.sub_nav').slideToggle("slow");
});
.children( )方法与.find()的不同之处在于 .children( ) 仅沿 DOM 树向下移动一个级别,而 .find() 也可以向下遍历多个级别以选择后代元素(孙子等)。
$('.left_navigation ul li').click( function () {
$(this).find(".sub_nav").slideToggle("slow");
});