当我点击“.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>
感谢。
答案 0 :(得分:176)
您可以使用text
方法:
$(function(){
$(".pushme").click(function () {
$(this).text(function(i, text){
return text === "PUSH ME" ? "DON'T PUSH ME" : "PUSH ME";
})
});
})
答案 1 :(得分:17)
你也可以这样使用.toggle()
:
$(".pushme").toggle(function() {
$(this).text("DON'T PUSH ME");
}, function() {
$(this).text("PUSH ME");
});
http://api.jquery.com/toggle-event/的更多信息。
这种方式也可以很容易地更改文本或添加超过2种不同的状态。
答案 2 :(得分:9)
如果您想将操作仅应用于该按钮,请尽可能使用自定义ID。
<button class="pushDontpush">PUSH ME</button>
$("#pushDontpush").click(function() {
if ($(this).text() == "PUSH ME") {
$(this).text("DON'T PUSH ME");
} else {
$(this).text("PUSH ME");
};
});
工作CodePen:Toggle text in button
答案 3 :(得分: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];
});
});
答案 4 :(得分:4)
如果您理解,请使用if / else语句..或三元
$(".pushme").click(function () {
var $el = $(this);
$el.text($el.text() == "DON'T PUSH ME" ? "PUSH ME": "DON'T PUSH ME");
});
答案 5 :(得分:3)
$(".pushme").click(function () {
var button = $(this);
button.text(button.text() == "PUSH ME" ? "DON'T PUSH ME" : "PUSH ME")
});
这个三元运算符有隐式返回。
如果?
之前的表达式为true
,则返回"DON'T PUSH ME"
,否则返回"PUSH ME"
这个if-else声明:
if (condition) { return A }
else { return B }
具有等效的三元表达式:
condition ? A : B
答案 6 :(得分:2)
我更喜欢以下方式,它可以被任何按钮使用。
<button class='pushme' data-default-text="PUSH ME" data-new-text="DON'T PUSH ME">PUSH ME</button>
$(".pushme").click(function () {
var $element = $(this);
$element.text(function(i, text) {
return text == $element.data('default-text') ? $element.data('new-text')
: $element.data('default-text');
});
});
答案 7 :(得分:2)
如果您使用&#39;值设置按钮文字&#39;属性你需要设置
而不是:
同样在我的情况下,最好将JQuery direct直接添加到按钮的onclick事件中:
onclick="$(this).val(function (i, text) { return text == 'PUSH ME' ? 'DON'T PUSH ME' : 'PUSH ME'; });"
答案 8 :(得分:1)
您也可以使用数学函数来执行此操作
var i = 0;
$('#button').on('click', function() {
if (i++ % 2 == 0) {
$(this).val("Push me!");
} else {
$(this).val("Don't push me!");
}
});