2011-10-27 80 views
3

我遇到了jQuery element.data()神秘的重置问题。我已经检查过数据是否存储在单击事件中的元素上。什么会导致jquery.data()消失?

Some simple tests to recreate the problem (with no success) here.

的数据存储后会发生什么是一系列的动作,改变编号:s的数据字段,表单提交,处理响应,一些渲染等......总之,足够事情发现问题的速度很慢。我检查了没有我存储的数据的$ .cache-object。代码中的.removeData全部都以编辑输入字段的形式定位到提交按钮。

$element.removeData('attribute'); 

任何想法什么事情可以导致数据重置?

jQuery.data源here

+1

难道您的表单提交会触发页面的重新加载(并因此丢失存储在$ .data中的所有数据)? – m90

+1

您是否在某些时候从DOM中删除了该元素,并稍后将其重新插入到代码中? –

+2

尝试在firefox中安装firebug和firequery,然后您可以看到元素上的数据。当你逐步浏览代码并观察数据何时消失时,请注意。 –

回答

0

你是否改变了你的html模板?

我最近处理的是单击事件中数据正在消失的同一问题。我重新模板化了我的html,并将数据附加到父节点上,但点击事件是在子节点上触发的。

<div> <!-- The data was attached here --> 
    <div class="clickable"> <!-- click events were firing here --> 


    </div> 
</div> 
+0

这个问题有一段时间了,但我猜测它可能是类似的东西。重写元素或使用错误的节点.. – Marcus

0

这是asp.net的任何机会?我知道使用asp.net ajax进行的ajax调用是非破坏性的post-backs,但它们确实会提供客户端脚本代码(javascript)。试试这个:

创建一个文本框的html输入(隐藏很好),并在那里存储数据值。在ajax调用之后检查输入的值,确保输入值仍然被设置。

如果你仍然有价值,但缺少js更新(包括任何js变量),那么ajax调用正在做一个回收并不是破坏表单内容,而是破坏javascript代码。

+0

它不是.net,没有使用框架,只有jQuery,openlayers和JSON API。 – Marcus

+0

不应该有任何JS的破坏,除非从OL或自定义地图库泄漏出来。但是他们不做任何jQuery数据操作,或者那些有数据的DOM部分。 – Marcus

0

当元素从DOM中移除时,Jquery数据也会从元素中移除。您仍然可以访问突变观察者中的已删除元素,但其上的Jquery数据已消失。

相关问题