我有 jquery 点击回调,这从 DOM 中获取了一些数据,我需要在另一个点击回调中使用这些数据
$('#test').click(function () {
var some_var = $(this).attr('title').split('-');
});
在另一次点击中我需要使用它
$('#test2').click(function () {
init(data_from_test);
});
如何将数据从一次单击返回到另一次?
谢谢
(function() {
var some_var;
$('#test').click(function () {
some_var = $(this).attr('title').split('-');
});
$('#test2').click(function () {
if( some_var) init(some_var);
});
})();
您必须将数据存储在第一次单击和下一次单击都可以访问的变量中。
我通常会有一个命名空间,所以我会这样做
App.currentClickContext = {}
然后在第一次点击
App.currentClickContext.data = xxxx
然后在第二个我可以访问该数据
data
您可以将数据保存在某个元素上的 jQuery对象中。
$('#test').click(function () {
var some_var = $(this).attr('title').split('-');
$(document).data("someData",some_var);
});
$('#test2').click(function () {
init($(document).data("someData"));
});
或者,您可以使用全局变量(或单个全局变量的属性,或Esailija和jAndy提到的更高范围的变量)。
var globalData = null;
$('#test').click(function () {
globalData = $(this).attr('title').split('-');
});
$('#test2').click(function () {
if(globalData) {
init(globalData);
{
});
最简单的方法是在更高范围内使用(免费)变量。例如:
(function() {
var some_var;
$('#test').click(function () {
var some_var = $(this).attr('title').split('-');
});
$('#test2').click(function () {
init(some_var);
});
}());
还有其他方法可以解决此问题,例如
datasets
条目namespace object