DOM中的数据值更新,但不在功能中

时间:2016-10-12 11:00:22

标签: javascript jquery dom

我根据用户的选择更改了按钮的文本。

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.logDOM会更新。

为什么?

2 个答案:

答案 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
   }