2011-10-11 64 views
2

我有jQuery或JavaScript中的函數調用序列或優先級的問題。如何在jquery或javascript中設置函數調用的順序或優先級?

假設我在onclick事件上編寫了不同的函數,您可以在下面給出的代碼中看到我在onclick事件上有不同的函數。像

的(a)的onclick委託功能
(b)中的onclick bind函數
(c)中的onclick 點擊功能
(d)的onclick INLINE點擊功能。

我的問題是:我想調用其他onclick函數頂部的委託onclick函數,意思是當單擊事件生成時,第一次調用應委託onclick函數而不是其他函數。有inLine onclick函數默認情況下首先調用,我不想要。

<html> 
    <head> 
     <script type="text/javascript" src="jquery.js"></script> 
     <script type="text/javascript"> 

      $(function(){     
       $("body").delegate(".track", "click", function(){      
        alert("Delegate called"); 

       }); 

       $("a.track").click(function(){ 
         alert("Click function called"); 
       }); 

       $(".track").bind("click", function(){ 
        alert("Bind click called"); 
       }); 


      }); 



     </script> 
    </head> 

    <body> 

     <table border="0"> 
      <tr> 
       <td> 
        <p class="track">Click Me </p> 
        <input type="button" class="track" value="click me" /> 
        <a href="http://google.com" class="track" onclick="javascript:alert('in Line on click called');">Go Google</a> 
        <br /> 
        <a href="http://yahoo.com" class="track">Go Yahoo</a> 
        <br /> 
        <a href="http://gaadi.com" class="track">Go Gaadi</a> 
        <br /> 
       </td> 
      </tr> 
     </table> 
    </body> 
</html> 

謝謝您的回答。
我的問題是,我想跟蹤特定網頁上的每個點擊事件。假設有一個內聯或外部onclick事件調用某個函數或點擊按鈕或其他東西的鏈接。我希望,當點擊事件產生我的特定功能時,應首先調用它,將發送ajax請求並更新數據庫,在特定頁面上生成特定鏈接或按鈕上的特定點擊事件。現在,在一個網站中可以有許多頁面,並且在一個特定頁面上可以有許多鏈接或按鈕。我不想在現有代碼中進行更改或修改。我只想要一個全局jQuery或JavaScript函數,它調用每個點擊事件並在任何默認的onclick動作發生之前跟蹤事件。

+1

我想不出任何問題,結合多個點擊處理程序可以解決重組代碼解決不了更好的。或者以問題的形式:你爲什麼需要這樣做? –

+0

格雷格說的+1。考慮重構你的代碼。 jQuery綁定事件的功能有一個可定義的模式,但是你不應該依賴這個模式。 – Anurag

回答

0

單擊,綁定代表是訂單,如果inLine點擊,它會先到達。

如果順序很重要,您可以創建自己的事件並綁定回調以在其他回調觸發這些事件時觸發。

$('a.track').click(function(e) { 
    // maniplate a.track ... 
    $('a.track').trigger('a.track-manipulated'); 
}); 

$('a.track').bind('a.track-manipulated', function(e) { 
    // do more stuff now that a.track has been manipulated 
    return; 
}); 

和更多信息,請看看這個,http://www.bennadel.com/blog/1525-jQuery-s-Event-Triggering-Order-Of-Default-Behavior-And-triggerHandler-.htm