微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

需要用html代码替换+/-字符例如—在一小段jQuery中

如何解决需要用html代码替换+/-字符例如—在一小段jQuery中

| 我有一个相当普通的jQuery,当单击+时切换div的可见性,单击-时将其隐藏(单击时+变为-)。问题在于+/-切换器会跟随某些文本,该文本有时带有+或-并同时切换。例如:了解有关blah-blah +的更多信息。单击时,加号变为减号。再次单击时,两个减号都变为加号。 我想如果我只是将+更改为
+
,将减号更改为
&#8212
;在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>
证明在小提琴中:http://jsfiddle.net/rFeeJ/1/ 附加内容: 要使其通用,您需要使用类而不是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\') ? \'-\' : \'+\');
    }); 
});
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。