当我查找.data()的语法时,它给出了这样的例子:
$('body').data('foo', 52);
我正在进行AJAX加载,我想知道是否可以使用.data()存储传入的html,所以一旦加载了内容,如果再次点击相同的链接,我就不需要再做一次AJAX加载 - 我会检查.data键是否为空。
这样的事情有用吗?:
将#ajaxdiv的内容加载到存储中:
$('body').data('storage', div#ajaxdiv.html());
测试数据是否已加载:
if $('body').data('storage') != '' {
div#ajaxdiv.html($('body').data('storage'));
}
提前致谢!!
的Al
答案 0 :(得分:1)
您需要撰写$('div#ajaxdiv').html
。
答案 1 :(得分:1)
编辑:再看一遍后,我不确定你为什么要将数据存储在body
元素中。请记住,data()
方法不能替代所有变量 - 只需要与给定元素关联的数据。有关详细信息,请参阅下面的示例。
应该可以正常工作。 data()
方法就像将数据存储到变量中一样,但该数据现在可以方便地与元素本身相关联。
但是,您应该小心命名用于数据的密钥。在您的代码中,您使用的是'storage'
,但这非常通用,并且似乎非常容易与其他代码发生冲突。我建议使用前缀,例如:'blah.storage'
。
另外,SLaks是正确的 - 你的选择器需要通过jQuery传递。
// SLaks' correction and my namespace suggestion
$('body').data('blah.storage', $('#ajaxdiv').html());
// Alternative method, where #ajaxLink is the link you click to trigger
// the data retrieval
$('#ajaxLink').bind('click', function (e) {
e.preventDefault();
// Notice that we're using $(this).data(), so that our cache is associated
// with the link element itself.
if ($(this).data('blah.cachedAjaxHtml')) {
// The data was found in the cache. Use it to populate the div.
$('#ajaxDiv').html($(this).data('blah.cachedAjaxHtml'));
} else {
// Load the data via AJAX and store it in the cache
var ajaxResult = whateverYouDoToLoadIt();
$(this).data('blah.cachedAjaxHtml', ajaxResult);
$('#ajaxDiv').html(ajaxResult);
}
}
答案 2 :(得分:0)
$('body').data('storage', div#ajaxdiv.html());
......应该......
$('body').data('storage', $('#ajaxdiv').html());
...和...
div#ajaxdiv.html($('body').data('storage'));
......应该......
$('#ajaxdiv').html($('body').data('storage'));