2012-07-19 77 views
2

我有jQuery的點擊回調,這抓住從DOM一些數據,我需要再點擊一下回調如何從jquery callback fnc返回數據?

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

,並再次點擊該數據的使用,我需要用它

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

我如何將數據從一次點擊返回到另一次?

謝謝

+0

使用全局變量? – 2012-07-19 13:51:44

回答

0

你必須將數據存儲在一個變量,它是雙方第一次點擊和下一個點擊訪問。

我通常有一個命名空間,所以我會做

App.currentClickContext = {}

然後在第一次點擊

App.currentClickContext.data = xxxx

然後在第二個我可以訪問數據

0

您可以將數據保存在某個元素的jQuery data對象上。

$('#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); 
    { 
}); 
1
(function() { 
    var some_var; 
    $('#test').click(function() { 
     some_var = $(this).attr('title').split('-'); 
    }); 

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

})(); 
0

最簡單的方法是在較高的範圍使用(免費)的變量。例如:

(function() { 
    var some_var; 

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

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

還有其他的方法來解決此問題,像

  • 使用datasets entrys
  • 使用namespace object
+0

這些日子你爲什麼不聊天? :(順便說一句,如果'some_var'仍然是'undefined',你可能不想'init' – Esailija 2012-07-19 13:54:42

+0

@Esailija:作者假定檢查發生在'init()';) – jAndy 2012-07-19 13:58:42