1

私はボタンを持っています:

<button id="btn1">55</button>

そして、ボタンの値をtest2に変更します

$('#btn1').text("22");

ボタンoldValueがnewValueより大きい場合、背景画像を表示したいと思います。

このボタンから古い値を取得するにはどうすればよいですか?

「私は100以上のボタンを持っていて、それらは動的に変化しています。」

更新:変更される前に発生するイベントはありませんか?

4

6 に答える 6

5

jQueryの.data()呼び出しを使用して、必要に応じて取得できるように保存できます。

たとえば、HTMLは次のようになります。

HTML

<form action="#" method="GET">
    <input type="text" value="369" />
    <button id="btnID">420</button>
</form>

最初に必要なデータを簡単に収集し、それを各要素に割り当てることができます。

スクリプトを開く

$("button") //  would simply grab all buttons, you can use whatever css selector
    .each(function(i) {
        $(this).data("prevVal", parseInt($(this).text()));
    });

その後、必要に応じて、この値を新しい値と照合できます。

... some change function
    $('#btn1').text("22");
    if ($('#btn1').data("prevVal") > 22) {
        //  do work
    }
    $('#btn1').data("prevVal", 22)

参考までに

代わりに入力を使用している場合は、次のようになります。

$("input").each(function(i) { $(this).data("prevVal", parseInt($(this).val())) })
    .on("change", function(e) {
        var newVal = parseInt($(this).val());
        if ($(this).data("prevVal") > newVal) {
            //  do work
        };
        $(this).data("prevVal" newVal);
    });

または、値のリストを維持したい場合:

$("input").each(function(i) { 
        $(this).data("vals", new Array());
        $(this).data("vals").push(parseInt($(this).val()));
    })
    .on("change", function(e) {
        $(this).data("vals").push(parseInt($(this).val()));
        var vals = $(this).data("vals");
        if (vals[vals.length-1] > vals[vals.length-2]) {
            //  do work
        };
    });
于 2012-10-03T15:11:59.203 に答える
2

値を変更する前に比較する必要があります。

例えば

$('#btn1').text(function (index, old) {
   if (parseInt(old) > 22) {
    //change background image
   }
   return "22";
});

フィドル

于 2012-10-03T15:02:54.547 に答える
1

変更前に保存しない限り、古い値を取得することはできません。変更イベントは、値がすでに変更された後に発生します。

于 2012-10-03T15:01:26.800 に答える
0

古い値がどこにあるかわからない..しかし、テキストを変更しているときにそれがあれば、関数を使用してテキストを変更します。

$('#btn1').text(function (index, oldvalue) {
   console.log(oldvalue);
   return "test2";
});
于 2012-10-03T15:00:40.213 に答える
0

jQuery.data()を使用して、指定された要素に関連付けられたデータを保存すると、同じ要素にアクセスするだけでデータを取得できます。

jQuery.data ()の使用方法を示すリンクは次のとおりです。

より便利な.data()リンクを使用したコードは次のとおりです

セットする

$("#btn1").data("oldVal",  $("#btn1").html());

得る

$("#btn1").data("oldVal");

フィドル

于 2012-10-03T15:03:00.247 に答える
0
 <button id="btn1">test1</button>

    ​$(document).ready(function(){
        var i=1;
        $('#btn1').click(function(){
        $(this).data('old', $.trim($(this).text())).text('btn'+(++i));
            alert( $(this).data('old'));
        });
    });​

デモ

于 2012-10-03T15:03:57.137 に答える