需要更换+;/-带有html代码的字符(例如)— 在jQuery的一小部分中

需要更换+;/-带有html代码的字符(例如)— 在jQuery的一小部分中,jquery,toggle,Jquery,Toggle,我有一个相当普通的jQuery,它在单击+时切换div的可见性,在单击-时隐藏它(单击+时+变为-)。问题是+/-切换程序跟随某些文本,这些文本中有时包含+或-以及两者切换。例如:了解更多关于blah blah+的信息。单击时,加号变为减号。再次单击时,两个负数都将变为正数 我想如果我把+改成a+和a减去a—;在jquery中,它可以解决问题,但它不起作用。div可见性将打开/关闭,但加号/减号不会更改 以下是脚本: function toggleSpecial(element)

我有一个相当普通的jQuery,它在单击+时切换div的可见性,在单击-时隐藏它(单击+时+变为-)。问题是+/-切换程序跟随某些文本,这些文本中有时包含+或-以及两者切换。例如:了解更多关于blah blah+的信息。单击时,加号变为减号。再次单击时,两个负数都将变为正数

我想如果我把+改成a
+和a减去a
;在jquery中,它可以解决问题,但它不起作用。div可见性将打开/关闭,但加号/减号不会更改

以下是脚本:

function toggleSpecial(element)
{
    jQuery(element).next(".hidden").slideToggle("fast"); 
    jQuery(element).html(function(i,html) {
        if (html.indexOf('+') != -1 ){
           html = html.replace('+','-');
        } else {
           html = html.replace('-','+');
        }
        return html;
    });
}
下面是用HTML代码替换+和-的脚本,它不起作用

function toggleSpecial(element)
{
    jQuery(element).next(".hidden").slideToggle("fast"); 
    jQuery(element).html(function(i,html) {
        if (html.indexOf('+') != -1 ){
           html = html.replace('+','—');
        } else {
           html = html.replace('—','+');
        }
        return html;
    });
}

有没有关于我做错了什么的想法或建议?谢谢

你的可视性是基于完全随意的切换。为什么不看看它是否可见?此外,您可以将角色包装成一个跨度,然后执行以下操作:

$('#iamelement').click(function() {
    var $this = $(this);
    $this.next(".hidden").slideToggle("fast", function() {
        $this.find('span').text($(this).is(':visible') ? '-' : '+');
    }); 
});
<a href="#" id="iamelement">toggle thing <span>+</span></a>
<div class="hidden">
    thing
</div>
这将适用于以下情况:

$('#iamelement').click(function() {
    var $this = $(this);
    $this.next(".hidden").slideToggle("fast", function() {
        $this.find('span').text($(this).is(':visible') ? '-' : '+');
    }); 
});
<a href="#" id="iamelement">toggle thing <span>+</span></a>
<div class="hidden">
    thing
</div>

事情
证据就在这里:

补充: 要使其通用,您需要使用类而不是ID。我只是想说明一下

<a href="#" class="toggler">toggle thing <span>+</span></a>
<div class="hidden">
    thing
</div>
<a href="#" class="toggler">toggle thing 2 <span>+</span></a>
<div class="hidden">
    thing 2 
</div>
<a href="#" class="toggler">toggle thing 3 <span>+</span></a>
<div class="hidden">
    thing 3
</div>

$('a.toggler').click(function() {
    var $this = $(this);
    $this.next(".hidden").slideToggle("fast", function() {
        $this.find('span').text($(this).is(':visible') ? '-' : '+');
    }); 
});

事情
事情2
事情3
$('a.toggler')。单击(函数(){
var$this=$(this);
$this.next(“.hidden”).slideToggle(“fast”,function()){
$this.find('span').text($(this.is)(':visible')?'-':'+');
}); 
});

为什么不将+括在一个div中,只在该div中切换?他/她很可能正在单击
a
,我们都知道
a
s是内联元素,而
div
s是块元素<代码>
是他/她想要的,假设他/她想通过验证!如果我在下面给出的答案是你想要的,请将它标记为答案。谢谢你的回复亚当。。。如果我不能为每个实例添加唯一的ID怎么办?此外,示例中的第二个切换也可以使用。谢谢这是因为我的HTML中有两个ID,但只引用了一个。请参阅上面的更新,以了解有关在没有ID的情况下使其通用的更多信息。如果此答案是您要查找的答案,请将其标记为答案。