我有一个按钮:
<button id="btn1">55</button>
所以我将按钮值更改为 test2
$('#btn1').text("22");
如果按钮 oldValue 大于 newValue,我想显示背景图片。
如何从此按钮获取旧值?
“我有 100 多个按钮,它们在动态变化。”
更新:在它改变之前没有触发事件吗?
我有一个按钮:
<button id="btn1">55</button>
所以我将按钮值更改为 test2
$('#btn1').text("22");
如果按钮 oldValue 大于 newValue,我想显示背景图片。
如何从此按钮获取旧值?
“我有 100 多个按钮,它们在动态变化。”
更新:在它改变之前没有触发事件吗?
您可以使用 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
};
});
您需要在更改值之前对其进行比较。
例如
$('#btn1').text(function (index, old) {
if (parseInt(old) > 22) {
//change background image
}
return "22";
});
除非您在更改之前保留它,否则您无法获得旧值。在值已经更改后会触发 change 事件。
不确定您想要旧值的位置.. 但如果它在更改文本时使用该函数来更改文本。
$('#btn1').text(function (index, oldvalue) {
console.log(oldvalue);
return "test2";
});
<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'));
});
});
用于演示