Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery仅在单击li而不是嵌套li时切换_Jquery_Nested_Toggle - Fatal编程技术网

jquery仅在单击li而不是嵌套li时切换

jquery仅在单击li而不是嵌套li时切换,jquery,nested,toggle,Jquery,Nested,Toggle,我得到了以下情况: 使用此js进行切换: $("ul > li.closed").click(function() { var li = $(this).closest('li'); li.find(' > ul').slideToggle('fast'); $(this).toggleClass("closed open"); }); 单击“标题”时,将显示ul。但当我点击一个图像或在它们之间点击时,它们会切换回来,并再次被隐藏。因此,我只想在单击“He

我得到了以下情况:

使用此js进行切换:

$("ul > li.closed").click(function() {
    var li = $(this).closest('li');
    li.find(' > ul').slideToggle('fast');
    $(this).toggleClass("closed open");
});

单击“标题”时,将显示ul。但当我点击一个图像或在它们之间点击时,它们会切换回来,并再次被隐藏。因此,我只想在单击“Headline”时切换,而不是在单击某些嵌套元素时切换,但我无法使此项正常工作。

只需检查单击的是否是
LI
,而不是刚刚冒泡的事件:

$("ul > li.closed").click(function(e) {
    if (e.target === this) {
        var li = $(this).closest('li');
        li.find(' > ul').slideToggle('fast');
        $(this).toggleClass("closed open");
    }
});

只需检查单击的是不是
LI
,而不是刚刚冒泡的事件:

$("ul > li.closed").click(function(e) {
    if (e.target === this) {
        var li = $(this).closest('li');
        li.find(' > ul').slideToggle('fast');
        $(this).toggleClass("closed open");
    }
});
试试这个:

$(function () {
    $("li.closed > ul").hide();

    $("ul > li.closed").click(function () {
        var li = $(this).closest('li');
        li.find(' > ul').slideToggle('fast');
        $(this).toggleClass("closed open");
    });

    $("li.fl, li.fl > a").click(function (e) {
        e.stopPropagation();
    });
});
试试这个:

$(function () {
    $("li.closed > ul").hide();

    $("ul > li.closed").click(function () {
        var li = $(this).closest('li');
        li.find(' > ul').slideToggle('fast');
        $(this).toggleClass("closed open");
    });

    $("li.fl, li.fl > a").click(function (e) {
        e.stopPropagation();
    });
});

最好的方法是将action元素包装在HTML标记中,以获得更多的控制权:

<ul>
    <li class="closed"><a href="javascript:void(0)">Headline 1</a>
        <ul>
            <li class="fl"><a href="#"><img src="#"></a></li>
            <li class="fl"><a href="#"><img src="#"></a></li>
        </ul>
    </li>

    ...       
</ul>

最好是将action元素包装在HTML标记中,以获得更多控制:

<ul>
    <li class="closed"><a href="javascript:void(0)">Headline 1</a>
        <ul>
            <li class="fl"><a href="#"><img src="#"></a></li>
            <li class="fl"><a href="#"><img src="#"></a></li>
        </ul>
    </li>

    ...       
</ul>

很好用,谢谢。学习新东西总是很好:)非常好用,谢谢。总是乐于学习新事物:)