Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery在触发器中切换范围文本_Javascript_Jquery - Fatal编程技术网

Javascript Jquery在触发器中切换范围文本

Javascript Jquery在触发器中切换范围文本,javascript,jquery,Javascript,Jquery,我想我很快就能弄明白了。我不熟悉javascript,但我的情况是这样的 默认情况下,我隐藏了一些列表。单击标题将显示列表。我希望标题中的范围从“+”更改为“-”,以分别隐藏和显示 我遇到的问题是两个标题的范围都发生了变化,而不仅仅是单击的标题 <div> <h3 class = "trigger"><span>+</span>Heading 1</h3> <ul class = "toggle">

我想我很快就能弄明白了。我不熟悉javascript,但我的情况是这样的

默认情况下,我隐藏了一些列表。单击标题将显示列表。我希望标题中的范围从“+”更改为“-”,以分别隐藏和显示

我遇到的问题是两个标题的范围都发生了变化,而不仅仅是单击的标题

    <div>
    <h3 class = "trigger"><span>+</span>Heading 1</h3>
    <ul class = "toggle">
        <li>Line One</li>
        <li>Line Two</li>
        <li>Line Three</li>
    </ul>
</div>
<div>
    <h3 class = "trigger"><span>+</span>Heading 2</h3>
    <ul class = "toggle">
        <li>Line One</li>
        <li>Line Two</li>
        <li>Line Three</li>
    </ul>
</div>

下面是一个

您需要特别告诉javascript只隐藏与该标题相关的span

一种方法是:)


您需要明确地告诉javascript只隐藏与该头相关的span

一种方法是:)

试试这个:

$(".trigger").click(function(){
    var trigger = $(this);
    $(this).next(".toggle").slideToggle(function(){
    trigger.children('span').text(
        $('.toggle').is(':visible') ? '-' : '+');
    });
});

试试这个:

$(".trigger").click(function(){
    var trigger = $(this);
    $(this).next(".toggle").slideToggle(function(){
    trigger.children('span').text(
        $('.toggle').is(':visible') ? '-' : '+');
    });
});

试试看:

$(".trigger").click(function(){
    var $this = $(this);
    $this.next(".toggle").slideToggle(function(){
        $this.find("span").text($(this).is(':visible') ? '-': '+');
    });
});
演示:

尝试:

$(".trigger").click(function(){
    var $this = $(this);
    $this.next(".toggle").slideToggle(function(){
        $this.find("span").text($(this).is(':visible') ? '-': '+');
    });
});
演示:

您非常接近:)下面是更新(有多种方法可以实现它)。如果访问
$('span')
内部的
滑动切换
,您将访问所有跨距,这就是为什么它会同时更改这两个跨距。您只需要从单击的标题访问范围,因此必须遍历返回到它

$(".trigger").click(function(){
    $(this).next(".toggle").slideToggle(function(){
    $(this).prev().children('span').text(
        $('.toggle').is(':visible') ? '-' : '+');
    });
});
您非常接近:)这是更新(有多种方法可以实现它)。如果访问
$('span')
内部的
滑动切换
,您将访问所有跨距,这就是为什么它会同时更改这两个跨距。您只需要从单击的标题访问范围,因此必须遍历返回到它

$(".trigger").click(function(){
    $(this).next(".toggle").slideToggle(function(){
    $(this).prev().children('span').text(
        $('.toggle').is(':visible') ? '-' : '+');
    });
});

在jQuery中使用时。运算符您要求jQuery使用一个toggle类获取所有DOM元素。如果您想更改一个id,可以请求一个特定的id。唯一地命名它们,并使用$(“#IDHERE”)进行访问,您将得到一个要更新的id,另一个将保持不变。

在jQuery中,当您使用。运算符您要求jQuery使用一个toggle类获取所有DOM元素。如果您想更改其中一个,您可以要求指定一个特定的id。唯一地命名它们,并使用$(“#IDHERE”)访问它们,您将得到一个更新,另一个将保持不变。

感谢您的解释,它为我澄清了问题。我能理解它为什么这样做,我只是不知道如何抓住我点击的东西的孩子。谢谢你的解释,它为我澄清了一切。我能理解它为什么这么做,我只是不知道如何抓住我点击的东西的孩子。嗨,凯文,你知道为什么下面的方法不起作用吗非常感谢。嗨,凯文,你知道为什么下面的方法不起作用吗非常感谢。