我根据用户的选择更改了按钮的文本。
var gm = require('gm');
gm('api/routes/image1.jpg')
.comment(['Text Example'])
.write('api/routes/image2.png',
function(e) {
console.log(e||'done');
});
然后我想调用一个函数$(".someClass").click(function() {
$("#someID_1").text($(this).prop("innerHTML"));
$("#someID_1").attr("data-value", $(this).data("value"));
someFunction("someID_1");
});
。
someFunction
发生的事情是function someFunction(someID) {
console.log(parseInt($("#" + someID).data("value")))
if ( parseInt($("#" + someID).data("value")) !== 10 ) {
// do something
} else {
// do something else
}
}
绘制了第一个函数调用(因此,第一次点击)选择的console.log
。但是,当我选择新内容并再次执行该功能时,通过data-value
绘制的data-value
保持不变。查看console.log
,DOM
会更新。
为什么?
答案 0 :(得分:2)
由于.data()
使用内部缓存,因此仅使用数据属性作为默认值,更新属性不会影响它,
您需要使用.data(key, value)
来设置值。如果您需要更新DOM,请使用.attr()
$("#someID_1").data("value", $(this).data("value"));
如果使用attr()
来获取和设置,您将获得更新的值。您不应使用的内容是attr()
和data()
的混合。如果您没有真正的理由更新属性,请使用data()
来获取和设置值。
答案 1 :(得分:-1)
尝试
$(document).on('click', ".someClass", function()
{
//your event logic
}