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

一部の要素の jQuerydataオブジェクトにデータを保存できます。

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

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

または、グローバル変数 (または 1 つのグローバル変数のプロパティ、またはEsailjajAndyが言及したより高いスコープの変数) を使用することもできます。

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 に答える