2012-05-23 44 views
2

我有一個插件腳本如下:我可以使用jQuery將多個點擊事件附加到元素嗎?

$("#menu") 
.on('click','a[href^="/Test"]',function(event){ 

     event.preventDefault(); 
     var href = $(this).attr('href'); 

     alert(this); 
     // Load content 
     $('#content').load(href, '', function (responseText, textStatus, XMLHttpRequest) { 
      $(this).applyTemplateSetup().buildTableOfContent(); 
     }); 
     window.location.hash = '#' + href; 

     // Get nav link 
     var a = $('#menu a[href="' + href + '"]'); 
     if (a.length > 0) { 
      // Mark as current 
      $('#menu a').removeClass('current'); 
      a.addClass('current'); 

      // Update breadcrumb 
      var breadcrumb = $('#breadcrumb').empty(); 
      while (a.length > 0) { 
       if (a.get(0).nodeName.toUpperCase() == 'A') { 
        var target = a; 
       } 
       else { 
        var target = a.parent().find('a:first'); 
       } 
       breadcrumb.prepend('<li><a href="' + target.attr('href') + '">' + 
       a.contents().filter(function() { 
        return this.nodeType == 3; 
       }).first().text() 
       + '</a></li>'); 

       // Check if opened 
       var li = a.parent(); 
       if (li.hasClass('closed')) { 
        li.removeClass('closed'); 
       } 

       a = li.parent().parent().children('a, span'); 
      } 
     } 
    });  

我想也設置用戶點擊時鏈接的價值。我在我的頁面上添加了這個 ,但它好像沒有被調用。 我將兩個相同類型的事件附加到一個元素上時是否有問題?

$("#menu") 
      .on('click', 'a[href^="/Test"]', function (event) { 
       event.preventDefault(); 
       var href = $(this).attr('href'); 
       var pk = href.substr(7, 4); 
       var rk = href.substr(12, 4); 
       var link = "/Admin/Testss/Edit?pk=" + pk + "&rk=" + rk; 
       $('#editLink').data('href', link); 
      }); 
+0

第一功能的其餘部分是相關的,特別是如果它是'回到FALSE' ... – lonesomeday

+0

我加了函數的其餘部分。沒有回報是錯誤的。我想知道是否有兩個event.preventDefault(); –

+0

爲什麼你需要2個點擊事件?這與你附加的元素是一樣的,所以只需將你的代碼放在一起,並將其組合成一個事件 – Tom

回答

1

是的,它應該工作。確保定義第二個處理程序的代碼實際上正在執行。

或者,您可以隨時修改您附加的第一個處理函數,以調用您的(多個)其他函數。

就我個人而言,我寧願讓前者工作,因爲它允許你獨立地附加/分離處理程序。

如果您使用Bind,是否也有同樣的問題?

正如對Q的評論所述,如果任何函數返回false,它將阻止事件冒泡。

0

只要它保持在一個點擊事件,有它在二是redudant

相關問題