2013-10-14 264 views
12

看到Toggling button text in jquery这个问题后,我试图在我的情况下重新创建它,但似乎无法工作。jQuery:点击更改按钮文字

这里是我做了什么小提琴:http://jsfiddle.net/V4u5X/

$('.SeeMore2').click(function(){ 
    var $this = $(this); 
    $this.toggleClass('SeeMore'); 
    if($this.hasClass('.SeeMore2')){ 
     $this.text('See More');   
    } else { 
     $this.text('See Less'); 
    } 
}); 

它似乎永远只运行if语句一次。我错过了什么?

+6

不要放在参数'hasClass'一个'.'。 – Barmar

+0

如果我这样做,它实际上不会改变文本 – Scherf

+1

您切换seeMore类,但从来没有处理seemore2 –

回答

33
$('.SeeMore2').click(function(){ 
    var $this = $(this); 
    $this.toggleClass('SeeMore2'); 
    if($this.hasClass('SeeMore2')){ 
     $this.text('See More');   
    } else { 
     $this.text('See Less'); 
    } 
}); 

这应该这样做。你必须确保你切换正确的课程并取出“。”。从hasClass

http://jsfiddle.net/V4u5X/2/

+0

* facepalm *我误解了参数为.toggleClass工作的方式。我认为你会在()中指定一个独立的类。在我看来,它仍然有SeeMore2的类,现在我看它。谢谢您的帮助! – Scherf

+0

不适用于包含具有多个同一按钮的多个实例的多个条目的档案。 @Scherf – Dev

1

这应该为你工作:

$('.SeeMore2').click(function(){ 
     var $this = $(this); 
     $this.toggleClass('SeeMore2'); 
     if($this.hasClass('SeeMore2')){ 
      $this.text('See More');   
     } else { 
      $this.text('See Less'); 
     } 
}); 
1

工作短码

$('.SeeMore2').click(function(){ var $this = $(this).toggleClass('SeeMore2'); if($(this).hasClass('SeeMore2')) { $(this).text('See More');
} else { $(this).text('See Less'); } });

4

试试这个,这 javasc ript代码以便随时更改文本以单击按钮。 http://jsfiddle.net/V4u5X/2/

HTML代码

<button class="SeeMore2">See More</button> 

的JavaScript

$('.SeeMore2').click(function(){ 
     var $this = $(this); 
     $this.toggleClass('SeeMore2'); 
     if($this.hasClass('SeeMore2')){ 
      $this.text('See More');   
     } else { 
      $this.text('See Less'); 
     } 
    });