首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery this.siblings不能正常工作

jquery this.siblings不能正常工作
EN

Stack Overflow用户
提问于 2015-04-28 13:31:28
回答 4查看 4.5K关注 0票数 2

我目前正在为一个显示年份的网站页面创建一个时间表,当点击它时,它应该打开并显示那些年中发生的事情,并将其他内容从其他年份隐藏起来。出于某种原因,我的jquery所做的恰恰相反,它保留了我单击的内容,并每隔一年隐藏一次它们的数据。

这是我的HTML

代码语言:javascript
复制
<div class="timeline">
    <ul>
        <li class="timeli">1996
            <ul class="timeUlSub">
                <li>
                    <div class="arrow-up"></div>
                    <p class="timeline-description">test</p>
                </li>
                <li>
                    <div class="arrow-up"></div>
                    <p class="timeline-description">test</p>
                </li>
            </ul>
        </li>
        <li class="timeli">1997
            <ul class="timeUlSub">
                <li>
                    <div class="arrow-up"></div>
                    <p class="timeline-description">Test</p>
                </li>
            </ul>
        </li>
        <li class="timeli">1999
            <ul class="timeUlSub">
                <li>
                    <div class="arrow-up"></div>
                    <p class="timeline-description">test</p>
                </li>
            </ul>
        </li>
    </ul>
</div>

这里是我的jquery,我想我的问题是我没有完全理解jquery中的.sibling。

代码语言:javascript
复制
$(document).ready(function(){
    $(".timeli").click(function(){
        $(this).siblings($(".timeUlSub")).slideToggle("slow", function(){});
    });
});

这是对答案的编辑,它对我非常有效,谢谢你的帮助!

代码语言:javascript
复制
$(document).ready(function(){
        $(".timeli").click(function(){
        $(this).find($(".timeUlSub")).slideToggle("slow", function(){});
    });});
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-04-28 13:33:45

timeUlSubtimeli的子级,而不是同级元素(相同级别的元素)。使用查找()儿童()

代码语言:javascript
复制
 $(this).find(".timeUlSub").slideToggle("slow", function(){});

代码语言:javascript
复制
 $(this).children(".timeUlSub").slideToggle("slow", function(){});

注:children()只搜索一级子类,find()只搜索子级、大类等.

票数 3
EN

Stack Overflow用户

发布于 2015-04-28 13:33:35

.timeUlSub是单击li元素的子元素。因此,您需要使用.find()而不是.siblings().You也不需要jquery对象,只需为必需的元素使用选择器:

代码语言:javascript
复制
  $(this).find(".timeUlSub").slideToggle("slow", function(){});

完全单击事件:

代码语言:javascript
复制
$(".timeli").click(function(){
      $(this).find(".timeUlSub").slideToggle("slow", function(){});
});
票数 1
EN

Stack Overflow用户

发布于 2015-04-28 13:36:45

我相信你想隐藏其他元素的子ul,但也要显示那些已经被点击的元素.

代码语言:javascript
复制
$(document).ready(function () {
    $(".timeli").click(function () {
        $(this).siblings().find(".timeUlSub").hide("slow");
        $(".timeUlSub", this).show("slow");
    });
});

这种行为是“打开我点击的那个,隐藏其余的”。

如果你想“切换我点击的那个”,你根本不需要担心兄弟姐妹。

代码语言:javascript
复制
$(".timeUlSub", this).slideToggle("slow");

在JSFiddle上看到它的作用,或第二版.

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

https://stackoverflow.com/questions/29921002

复制
相关文章

相似问题

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