slideToggle:+符号未更新为 -

时间:2012-09-03 19:57:18

标签: javascript jquery

如何解决以下问题?

1)+符号未正确更新为“ - ”,反之亦然;

2)My Settings测试首次点击+符号后消失。

$(function(){
    $('.myToggler').click(function(e){
        $(this).next().slideToggle();
        var sign=$(this).children(':first');
        sign.text(sign.text() == '+'?'+':'-');
        e.preventDefault;
    });
});

<div class="myToggler">
    <h3><span class="togglerSign">+</span>
    My Settings</h3>
</div>
<div class="mySlider">
</div>

3 个答案:

答案 0 :(得分:3)

jsBin demo

  • 您应该使用:.find()
  • 查找元素
  • 并使用:sign.text() == '+'?'-':'+'

刷新有关 三元运算符 的知识:

[statement]  ?  [if is true]   :  [if is false] ;
sign is '+'  ?  YES?set to'-'  :  NO?set to'+'  ;

jQuery的:

$(function(){
    $('.myToggler').click(function(e){
        $(this).next().slideToggle();
        var sign=$(this).find('span');
        sign.text(sign.text() == '+'?'-':'+');
        e.preventDefault;
    });
});

答案 1 :(得分:1)

var sign=$(this).children(':first');

应该是

var sign=$(this).children('span:first');

sign.text(sign.text() == '+'?'+':'-');

应该是

sign.text(sign.text() == '+'?'-':'+');

答案 2 :(得分:0)

有很多解决方案可以做到这一点。你也可以试试这个:

$(function(){
    $('.myToggler').click(function(e){
        $(this).next().slideToggle();
        sign = $('.'+this.className+' span:first-child');
        sign.text((sign.text() == "+") ? "-" : "+");
        e.preventDefault;
    });
});​

<div class="myToggler">
    <h3><span class="togglerSign">+</span>My Settings</h3>
</div>
<div class="mySlider"></div>