1

如何解决以下问题?

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>
4

3 回答 3

3

jsBin 演示

  • 您应该使用以下方法查找元素:.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;
    });
});
于 2012-09-03T20:01:55.147 回答
1
var sign=$(this).children(':first');

应该

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

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

应该

sign.text(sign.text() == '+'?'-':'+');
于 2012-09-03T19:59:45.040 回答
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>
于 2012-09-03T20:15:28.693 回答