2012-01-19 33 views
0

我有一個變量被設置在插件JS文件中,並且在我自己的自定義JS文件中,我將同一事件調用到開發人員工作上的piggypack。在身體上使用觸發器

問題是我需要訪問插件javascript事件中設置的變量。

$('#link').live('click', function() { 
    var test = 123456; 
    var another = 'string'; 

    $('body').trigger({ 
    'test' : test, 
    'another' : another 
    }); 
}); 

現在,在我自己的自定義JS,我呼籲#link同樣的方法添加自己的代碼來執行:其作爲插件JS遵循真實當前設置。

$('#link').on('click', function(){ 
    // I need to access the another variable set previously 
}); 

我真的沒有得到的是,當jquery文檔說,觸發方法是傳遞參數到事件處理程序。這是什麼意思?我將如何訪問前一個事件中設置的變量?

一如既往地提前致謝。

+0

您可以使用.trigger()來做到這一點,觸發事件。您傳遞.trigger()一個字符串,告訴它要觸發哪個事件(例如:'click'或'mouseenter')或實際的「事件」對象。這裏已經傳遞了一個包含2個屬性'test'和'another'的對象。那什麼都不會做。此外,訪問插件變量幾乎不是一個好主意。如果您告訴我們您實際上想要做的事情,我們可能會提供更好的解決方案。 – Sinetheta

+0

在插件中的這個特定事件中,作者執行.get()解析JSON並設置一些變量。我想在我的事件中訪問那些相同的變量,我也想同時開火,所以他指示我這就是爲什麼他包含('body')觸發器的原因。我想我只是不知道如何使用它。 – Steve

+0

我基本上試圖避免重複的.get()請求,只是訪問插件在第一個事件中返回的數據。我想我正在接近這個錯誤? – Steve

回答

1

通常情況下,你將額外的參數傳遞給一個事件,如果它有一個自定義事件,您可以訪問:此HIT事件之後

$('#link').live('click', function() { 
    var test = 123456; 
    var another = 'string'; 
    $('body').trigger('HIT',{ 
     'test': test, 
     'another': another 
    }); 
}); 

$('body').on('HIT', function(e,param1) { 
    $('#hitter').append('hi'); 
    $('#hitter').append(param1.test); 
}); 

,#hitter的價值將有「hi123456」附加到它。訪問「另一個」只是param1.another,它返回「string」。

+0

這似乎是訣竅,謝謝!我可以像你所做的那樣使用自定義事件,並將插件觸發器方法中的每個項目都添加爲參數,以便在新方法中再次訪問它們。 – Steve