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

除非您在更改之前保留它,否则您无法获得旧值。在值已经更改后会触发 change 事件。

于 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 回答