2

true と false の間で変数を切り替えて、buttonクリックしたテキストも変更したいだけです。これが私のJqueryです:

$("button").toggle(
  function () {
    $(this).text("Click to change to paint brush");
      var erasing = true;
  },
  function () {
    $(this).text("Click to change to eraser");
      var erasing = false;
  }
);

これは私には 100% 正しいように見えますが、私のjsfiddle では、ボタンをクリックする前にボタンの存在を切り替えていることがわかります! なぜこれが起こっているのですか、どうすれば修正できますか?

4

3 に答える 3

3

このバージョンの toggle は廃止され (1.8)、削除されました (1.9)。ここで、ボタン クリック自体で処理する必要があります。このようなもの:

var erasing = false;
$("button").click(function () {
    erasing = !erasing;
      $(this).text(function (_, curText) {
          return curText == "Click to change to paint brush" ? "Click to change to eraser" :  "Click to change to paint brush" ;
      });
    console.log(erasing);
  });

フィドル

さらに、変数の値を保持したい場合は、クリックイベントスコープの外で定義するだけで、外部からアクセスできるようになります。

見る

于 2013-06-23T05:11:42.697 に答える
1

トグルがどのように時代遅れであるかを説明してくれてありがとう...それで私が必要としたのはそれだけで、簡単なifステートメントで問題を解決しました:

var erasing = false;
var i = 0
$("button").click(function () {
    if(i%2==0){
        $(this).text("Click to change to paint brush");
        erasing = true;
    }
    else{
        $(this).text("Click to change to eraser");
        erasing = false;
    };
    i += 1
  });

jsfiddle

于 2013-06-23T05:21:48.303 に答える
0

PSL が言ったように、toggleあなたが探している はなくなり、失われました。mouseupクリック アンド ホールド ソリューションが必要な場合 (タイトルが示すように)、 andの使用を検討できますmousedown

 var erasing;
 $("button").on({
    "mousedown": function () {
        $(this).text("Click to change to paint brush");
        erasing = true;
    },
    "mouseup mouseleave": function () {
        $(this).text("Click to change to eraser");
        erasing = false;
    }
});

デモ: http://jsfiddle.net/hungerpain/ymeYv/6/

于 2013-06-23T05:14:44.373 に答える