2

我有 jquery 点击回调,这从 DOM 中获取了一些数据,我需要在另一个点击回调中使用这些数据

$('#test').click(function () {
    var some_var = $(this).attr('title').split('-');
});

在另一次点击中我需要使用它

$('#test2').click(function () {
    init(data_from_test);
});

如何将数据从一次单击返回到另一次?

谢谢

4

4 回答 4

1
(function() {
    var some_var;
    $('#test').click(function () {
        some_var = $(this).attr('title').split('-');
    });

    $('#test2').click(function () {
        if( some_var) init(some_var);
    });

})();
于 2012-07-19T13:53:03.450 回答
0

您必须将数据存储在第一次单击和下一次单击都可以访问的变量中。

我通常会有一个命名空间,所以我会这样做

App.currentClickContext = {}

然后在第一次点击

App.currentClickContext.data = xxxx

然后在第二个我可以访问该数据

于 2012-07-19T13:52:20.077 回答
0

data您可以将数据保存在某个元素上的 jQuery对象中。

$('#test').click(function () {
    var some_var = $(this).attr('title').split('-');
    $(document).data("someData",some_var);
});

$('#test2').click(function () {
    init($(document).data("someData"));
});

或者,您可以使用全局变量(或单个全局变量的属性,或EsailijajAndy提到的更高范围的变量)。

var globalData = null;

$('#test').click(function () {
    globalData = $(this).attr('title').split('-');
});

$('#test2').click(function () {
    if(globalData) {
        init(globalData);
    {
});
于 2012-07-19T13:52:28.210 回答
0

最简单的方法是在更高范围内使用(免费)变量。例如:

(function() {
   var some_var;

   $('#test').click(function () {
       var some_var = $(this).attr('title').split('-');
   });

   $('#test2').click(function () {
       init(some_var);
   });
}());

还有其他方法可以解决此问题,例如

  • 使用datasets条目
  • 用一个namespace object
于 2012-07-19T13:54:08.780 回答