首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试在单击链接时使slideToggle保持打开状态

问尝试在单击链接时使slideToggle保持打开状态
EN

Stack Overflow用户
提问于 2014-01-23 15:56:51
回答 3查看 1.9K关注 0票数 0

当单击这个JQuery时,我可以隐藏并显示它在UL下的LIs,并且它可以工作。然而,当我点击一个链接下的UL,它关闭,我希望它保持开放。

代码语言:javascript
复制
<script type="text/javascript">
$(function () {
    $('.headlink').click(function() {
        $(this).children('ul').slideToggle();
    });    
    $('.headlink').click(function(event) {
        event.stopPropagation();
    });
});
</script>

这是UL。

代码语言:javascript
复制
<ul class="arclist">
    <li class="headlink">
    <h2>+ Top Link</h2>
        <ul class="transcriptfile" style="display:none;">';
    <a href="transcripts/filename"><li>
    <p>Clickable Link</p></li></a>
        </ul>
</ul>

如果从一些PHP代码中填充ULs和LIs,但为了便于阅读,我将其取出来。就像我说的,一切正常,我得到多个ULs和多个LIs,可点击的链接都能工作,但它只是切换幻灯片,然后在单击其中一个可点击的链接后再次隐藏它,我不希望它。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-23 16:03:50

您可以在折叠菜单上使用.stopPropagation()来防止它在单击时切换。

http://jsfiddle.net/pVQsv/

代码语言:javascript
复制
$(function () {
    $('.headlink').click(function () {
        $('ul', this).slideToggle();
    });
    $('.headlink ul').click(function(e) {
        e.stopPropagation();
    });
});
票数 2
EN

Stack Overflow用户

发布于 2014-01-23 16:02:31

可以将处理程序绑定到h2元素上,如下所示:

代码语言:javascript
复制
$('.headlink h2').click(function() {
    $(this).next('ul').slideToggle();
});

检查这个演示

票数 1
EN

Stack Overflow用户

发布于 2014-05-15 16:31:20

我试着用非常不同的方式使用e.stopPropagation();,但它对我没有用:

所以我找到的解决办法是:

代码语言:javascript
复制
$(function () {
    $('.headlink').click(function() {
        $('.headlink ul').slideToggle();
    });

    $("headlink ul a").click(function() {
        $(".headlink ul").stop();
    });
});

也许这不是最传统的方法,但它也有效:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21313197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档