2012-02-24 68 views
0

我有一个问题,在我的页面中,我有一个div包含让我们说两个隐藏的字段值为0和2.我有一个按钮,触发ajax查询和更改具有相同隐藏字段但分别具有值1和2的div内容。问题是,它似乎像我的JavaScript(使用JQuery)没有意识到这些变化。当我检查我的页面查看HTML源代码,我看到的值发生了变化,但在剧本的时候我在做:JQuery Ajax没有更新DOM(我认为)

$("#btn").click(function() { 
    alert($("#hidden1").val()); 
    alert($("#hidden2").val()); 
}); 

它仍然显示我的旧值(0和2)一样,如果在DOM尚未更新。请有人帮助我,或告诉我,如果是正常的,以及如何解决它。

感谢您的时间 我!

+0

您可以添加更改字段的代码 – ggreiner 2012-02-24 17:03:59

+0

更改代码的位置在哪里? – James 2012-02-24 17:04:09

+0

你在哪里改变hidden1和hidden2的值? – 2012-02-24 17:05:04

回答

1

试试这个:

$("#btn").on('click', function() { 
    alert($("#hidden1").val()); 
    alert($("#hidden2").val()); 
}); 
+0

'.live()'与DOM没有更新有什么关系?.live()'确保事件监听器绑定到选择器,而不是当前存在的与选择器匹配的元素。 – kontur 2012-02-24 17:06:54

+0

没有'.live()'也被弃用。?? – 2012-02-24 17:07:41

+0

是的,它已被弃用。旧的习惯很难死掉,它被'on()'替代了。 – 2012-02-24 17:12:02

0

这并不是说DOM没有被更新,可能是因为你的jQuery事件在时间。点击绑定到特定元素()被调用。由于DOM已更改(您可能已删除并添加了同一个ID的新元素),该函数将返回您丢弃的元素的值(因为即使从DOM中删除,它仍保持绑定状态)。

使用live()方法或on()替代click()处理程序。 jQuery提供的这个方法在被调用的时候不会绑定到一个特定的DOM元素,而是每次检测到点击都进行动态查找。

+0

实际上这两个是不相关的。事件与按钮点击无关,并且点击是在更改完成后手动完成的..所以为什么它不会被更新? – maniak 2012-02-24 17:12:20

+0

我确实尝试过,但它不起作用 – maniak 2012-02-24 17:17:48

+0

因此,您的按钮不会被替换? – Kekoa 2012-02-24 17:18:20