首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示已单击的隐藏最近元素

显示已单击的隐藏最近元素
EN

Stack Overflow用户
提问于 2013-05-11 08:57:05
回答 5查看 1K关注 0票数 0

http://jsfiddle.net/KevinOrin/xycCx/1/

代码语言:javascript
复制
jQuery('.happening-main-text .readmore').click(function() {                  
    jQuery('.divmore').toggle('slow');       
    return false;                                       
});

我试图让每个链接只显示/隐藏一个被点击的链接。如何修改JS才能做到这一点。我试过('.happening-main-text').closest('divmore'),但也不起作用。

代码语言:javascript
复制
<div class="happening-main-text">
    <p>part of text goes here part of text <a href="#" class="readmore">show/hide</a>

    </p>
    <div class="divmore">
        <p>more test from hidden1</p>
    </div>
</div>
<div class="happening-main-text">
    <p>part of text goes here part of text <a href="#" class="readmore">show/hide</a>

    </p>
    <div class="divmore">
        <p>more test from hidden</p>
    </div>
</div>
<div class="happening-main-text">
    <p>part of text goes here part of text <a href="#" class="readmore">show/hide</a>

    </p>
    <div class="divmore">
        <p>more test from hidden2</p>
    </div>
</div>
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-05-11 09:03:22

如果您保持HTML的当前格式,则以下代码应该可以工作

代码语言:javascript
复制
jQuery('.happening-main-text .readmore').click(function() {                  
    jQuery(this).parent().next().toggle('slow');       
    return false;                                       
});                                                   
票数 3
EN

Stack Overflow用户

发布于 2013-05-11 09:03:55

通过查看您的小提琴中的DOM,这可能是解决它的一种方法:

代码语言:javascript
复制
jQuery('.happening-main-text .readmore').click(function() {                  
    jQuery(this).parent().next().toggle('slow');
    return false;
}

看看文档中的$.next$.parent。此外,您可能会注意到动画是“跳跃”的,这是因为p (related SO question)上的边距。去掉边距就能解决这个问题。例如:

代码语言:javascript
复制
p { margin: 0; }
票数 0
EN

Stack Overflow用户

发布于 2013-05-11 09:15:32

凯文,试着这样:

代码语言:javascript
复制
$('.happening-main-text').each(function() {
    $divmore = $(this).find(".divmore");
    $readmore = $(this).find(".readmore");
    $readmore.bind("click", {target: $divmore}, function(e) {
        e.data.target.toggle();
    });
});

由于html的结构,您需要向每次单击回调传递一个不同的目标。稍微重构一下DOM,您就可以使用$().siblings或其他更简单的解决方案。无论如何,您可以在这里查看您的小提琴的工作版本:http://jsfiddle.net/xycCx/6/

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

https://stackoverflow.com/questions/16492732

复制
相关文章

相似问题

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