【问题标题】:Slidetoggle next element滑动切换下一个元素
【发布时间】:2014-12-14 20:51:13
【问题描述】:

我有许多带有“阅读更多”链接的 sn-ps,我正在寻找一种方法为所有 sn-ps 提供相同的选择器。我认为 jQuery 的下一个可以工作:

<script>
$(document).ready(function () {
    $(".readmore").click(function () {
        $(".readmore").next().slideToggle("slow", function () {
            $(window).scrollTop($(this).offset().top);
        });
    });
});
</script>

Visible text 1<a class="readmore">Read More 1</a><div class="more">Text to appear 1</div>
Visible text 2<a class="readmore">Read More 2</a><div class="more">Text to appear 2</div>
Visible text 3<a class="readmore">Read More 3</a><div class="more">Text to appear 3</div>

<style>.more {display:none}</style>

不幸的是,当单击一个“阅读更多”链接时,会出现所有 sn-ps 的文本,而不仅仅是下一个元素。上面的代码有什么问题?

这是JsFiddle

【问题讨论】:

    标签: javascript jquery slide slidetoggle


    【解决方案1】:

    你应该改变

    $(".readmore").click(function () {
        $(".readmore").next()...
    

    $(".readmore").click(function () {
        $(this).next()...
    

    所以click()事件函数中的next()选择器只适用于当前点击的元素,而不是同时适用于类readmore的所有元素。

    【讨论】:

    • 哇!是不是很简单:) 最后一件事:有没有办法轻轻滚动到“出现”的文本,而不是在幻灯片效果结束后跳转?
    • @MultiformeIngegno 很高兴我能提供帮助。关于滚动 - 你的意思是例如像这样? jsfiddle.net/qLvzvvL6
    • 是的,没关系!如果屏幕可以在 div 的同时滚动就完美了(现在是在 div 滚动之后)
    • @MultiformeIngegno 是的,这是因为滚动是在 slideToggle() 回调中调用的,这意味着它在动画结束时开始。我会看看它是否可以以不同的方式处理并发表评论,但不是现在,因为这里已经很晚了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    相关资源
    最近更新 更多