Javascript jquery this.slides无法正常工作

Javascript jquery this.slides无法正常工作,javascript,jquery,html,elements,Javascript,Jquery,Html,Elements,我目前正在为一个显示年份的网站页面制作一个时间表,当点击它时,它应该会打开并显示那些年份发生的事情,并隐藏其他年份的内容。出于某种原因,我的jquery做的恰恰相反,它保留我单击的内容,并每隔一年隐藏一次它们的数据 这是我的HTML <div class="timeline"> <ul> <li class="timeli">1996 <ul class="timeUlSub">

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

这是我的HTML

<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>
这里是编辑的答案,它的工作非常适合我谢谢你的帮助

$(document).ready(function(){
        $(".timeli").click(function(){
        $(this).find($(".timeUlSub")).slideToggle("slow", function(){});
    });});

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

  $(this).find(".timeUlSub").slideToggle("slow", function(){});
完成点击事件:

$(".timeli").click(function(){
      $(this).find(".timeUlSub").slideToggle("slow", function(){});
});

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

  $(this).find(".timeUlSub").slideToggle("slow", function(){});
完成点击事件:

$(".timeli").click(function(){
      $(this).find(".timeUlSub").slideToggle("slow", function(){});
});

timeUlSub
timeli
的子元素,而不是同级元素。使用

 $(this).find(".timeUlSub").slideToggle("slow", function(){});

注意:
children()


timeUlSub
timeli
的子元素,而不是同级元素。使用

 $(this).find(".timeUlSub").slideToggle("slow", function(){});

注意:
children()

我相信您想隐藏其他元素的子元素,但也要显示已单击元素的子元素

$(document).ready(function () {
    $(".timeli").click(function () {
        $(this).siblings().find(".timeUlSub").hide("slow");
        $(".timeUlSub", this).show("slow");
    });
});
这种行为是“打开我单击的一个,隐藏其余的”

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

$(".timeUlSub", this).slideToggle("slow");
,或。

我相信您希望隐藏其他元素的子元素,但同时显示已单击元素的子元素

$(document).ready(function () {
    $(".timeli").click(function () {
        $(this).siblings().find(".timeUlSub").hide("slow");
        $(".timeUlSub", this).show("slow");
    });
});
这种行为是“打开我单击的一个,隐藏其余的”

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

$(".timeUlSub", this).slideToggle("slow");

,或.

.timeUlSub不是兄弟元素,而是.timeli的子元素

您应该重构代码以:

$(".timeli").click(function(){

    $(this).find(".timeUlSub").slideToggle("slow", function(){});

});
更好的实施方式是授权点击:

$(document).on("click", ".timeli", function(){

    $(this).find(".timeUlSub").slideToggle("slow", function(){});

});

.timeUlSub不是.timeli的兄弟元素,而是.timeli的子元素

您应该重构代码以:

$(".timeli").click(function(){

    $(this).find(".timeUlSub").slideToggle("slow", function(){});

});
更好的实施方式是授权点击:

$(document).on("click", ".timeli", function(){

    $(this).find(".timeUlSub").slideToggle("slow", function(){});

});

$(this).兄弟姐妹($(“.timeUlSub”)
这个
$(“.timeUlSub”)
没有任何意义。认为你想找到…
$(this).兄弟姐妹($(“.timeUlSub”)
$(“.timeUlSub”)
毫无意义。以为你想找到…谢谢!谢谢你的描述,我错误地认为兄弟姐妹和孩子都是可以互换的。“它现在工作得很好。”亚历克斯拜尔,很高兴能帮上忙!我没有投反对票。我认为你的回答说得很好,说明了我需要什么,它帮助我解决了问题,并解释了我不理解的地方。@AlexBeyer,那不是针对你的。:)谢谢,谢谢!谢谢你的描述,我错误地认为兄弟姐妹和孩子都是可以互换的。“它现在工作得很好。”亚历克斯拜尔,很高兴能帮上忙!我没有投反对票。我认为你的回答说得很好,说明了我需要什么,它帮助我解决了问题,并解释了我不理解的地方。@AlexBeyer,那不是针对你的。:)非常感谢。