「.pushme」ボタンをクリックすると、そのテキストが「プッシュしないでください」に変わります。ボタンをもう一度クリックしたときに、テキストをもう一度「Push me」に変えたいです。どうやってやるの?
<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>
ありがとう。
text
メソッドを使用できます:
$(function(){
$(".pushme").click(function () {
$(this).text(function(i, text){
return text === "Push ME" ? "DON'T Push ME" : "Push ME";
})
});
})
.toggle()
を次のように使用することもできます。
$(".pushme").toggle(function() {
$(this).text("DON'T Push ME");
}, function() {
$(this).text("Push ME");
});
詳細については http://api.jquery.com/toggle-event/ をご覧ください。
この方法により、テキストを変更したり、2つ以上の異なる状態を追加したりすることも非常に簡単になります。
そのボタンのみにアクションを適用する場合は、可能であればカスタム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");
};
});
作業コードペン: ボタン内のテキストの切り替え
非常に多くの素晴らしい答えがあり、私はミックスにもう1つを投げると思いました。これは、他とは異なり、任意の数のメッセージを簡単に循環させることができます。
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];
});
});
If/elseステートメントを使用します。理解できる場合は3項を使用します
$(".pushme").click(function () {
var $el = $(this);
$el.text($el.text() == "DON'T Push ME" ? "Push ME": "DON'T Push ME");
});
$(".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
「value」属性を使用してボタンテキストを設定する場合は、設定する必要があります
の代わりに:
また、私の状況では、ボタンのonclickイベントに直接JQueryを追加する方がうまく機能しました。
onclick="$(this).val(function (i, text) { return text == 'Push ME' ? 'DON'T Push ME' : 'Push ME'; });"
数学関数を使用してこれを行うこともできます
var i = 0;
$('#button').on('click', function() {
if (i++ % 2 == 0) {
$(this).val("Push me!");
} else {
$(this).val("Don't Push me!");
}
});