按钮文本在jquery中切换

Dor*_*şin 63 jquery button toggle

当我点击".pushme"按钮时,它将其文本变为"不要逼我".当再次点击按钮时,我想再次将文本转为"推我".我怎样才能做到这一点?

<html>

<head>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>

<body>
    <button class='pushme'>PUSH ME</button>
    <script>
        $(".pushme").click(function () {
            $(this).text("DON'T PUSH ME");
        });
    </script>
</body>

</html>
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/DQK4v/

谢谢.

und*_*ned 180

你可以使用text方法:

$(function(){
   $(".pushme").click(function () {
      $(this).text(function(i, text){
          return text === "PUSH ME" ? "DON'T PUSH ME" : "PUSH ME";
      })
   });
})
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/CBajb/

  • @gmonz`i`是指迭代的索引.我们必须接受使用第二个参数的第一个参数.这就是函数的工作方式!也可以使用`this.textContent`而不是回调函数的第二个参数.这里的`text`基本上等于`this.currentText`,其中`this`指的是一个单击的`.pushme`元素. (2认同)

got*_*les 17

你也可以.toggle()这样使用:

$(".pushme").toggle(function() {
    $(this).text("DON'T PUSH ME");
}, function() {
    $(this).text("PUSH ME");
});
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请访问http://api.jquery.com/toggle-event/.

这种方式也可以很容易地更改文本或添加超过2种不同的状态.

  • @Relequestual不幸的是,这是真的.隐藏/显示元素http://api.jquery.com/toggle/仍然存在切换,但此示例将不再适用于1.9版.:( (4认同)
  • .toggle已从jquery 1.9中删除.真是太遗憾了.看起来很不错! (2认同)

tim*_*ck2 9

如果您想将操作仅应用于该按钮,请尽可能使用自定义ID.

HTML

<button class="pushDontpush">PUSH ME</button>
Run Code Online (Sandbox Code Playgroud)

jQuery的

$("#pushDontpush").click(function() { 
    if ($(this).text() == "PUSH ME") { 
        $(this).text("DON'T PUSH ME"); 
    } else { 
        $(this).text("PUSH ME"); 
    }; 
});
Run Code Online (Sandbox Code Playgroud)

工作CodePen:在按钮中切换文本


ᾠῗᵲ*_*ᵲᄐᶌ 5

使用 if/else 语句.. 或三元,如果你理解它

$(".pushme").click(function () {
    var $el = $(this);
    $el.text($el.text() == "DON'T PUSH ME" ? "PUSH ME": "DON'T PUSH ME");
});
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/dFZyv/


Sam*_*son 5

有了这么多很棒的答案,我想我会再融入其中.与其他版本不同,这个版本允许您轻松地遍历任意数量的消息:

var index = 0,
    messg = [
        "PUSH ME", 
        "DON'T PUSH ME", 
        "I'M SO CONFUSED!"
    ];

$(".pushme").on("click", function() {
    $(this).text(function(index, text){
        index = $.inArray(text, messg);
        return messg[++index % messg.length];
    });
}??????????????????????????????????????????????);?
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/DQK4v/2/


Art*_*ipe 5

$(".pushme").click(function () {
  var button = $(this);
  button.text(button.text() == "PUSH ME" ? "DON'T PUSH ME" : "PUSH ME")           
});
Run Code Online (Sandbox Code Playgroud)

该三元运算符具有隐式返回。如果前面的表达式?true则返回"DON'T PUSH ME",否则返回"PUSH ME"

这个 if-else 语句:

if (condition) { return A }
else { return B }
Run Code Online (Sandbox Code Playgroud)

具有等效的三元表达式:

condition ? A : B
Run Code Online (Sandbox Code Playgroud)