2012-06-13 61 views
0

我有一個單元格表格,當單擊一個單元格時觸發一個事件。我想動態添加單元格,所以我會在所有行上再次調用OnClick。當我第二次調用OnClick時,任何有兩次OnClick調用的單元都會停止觸發任何事件。兩次調用OnClick()會導致OnClick不起作用

奇怪的是在我的OnClick函數中,如果我可以「返回」它的工作原理,但它拋出一個錯誤說沒有定義「返回」

function initBox() { 
    $(".selectable").on('click', function (event) { 

     //if its selected already, unselect it 
     if ($(this).hasClass('rowHighlightColor')) { 
      $(this).removeClass("rowHighlightColor"); 
      selectedCellList = null; 
     } 
     else { 
      //unselect previous cell 
      if (selectedCellList != null) { 
       selectedCellList.removeClass("highlighted"); 
      } 
      selectedCellList = $(this); 

      $(this).addClass("rowHighlightColor"); 
     } 
     Return; 
    }); 
} 
+0

請您在downvote之前閱讀說明,我知道Return沒有定義。我說這很奇怪,它使它工作 – James

+1

你有沒有在你的問題上取得任何進展?添加一個'console.log'到你的函數中,我很確定它被調用了兩次,從而使「addClass」效果無效,使你認爲它不起作用。 – Christoph

回答

1

您正在向現有單元添加多個事件處理程序。這就是爲什麼我更願意只使用簡單的舊.onclick屬性的原因之一。

無論如何,要解決此問題,您只能將事件應用於新單元格,或者在添加事件時向它們添加屬性,然後在再次添加事件之前檢查該屬性。

7

它需要return,而不是Return(大寫R)

然而,寫return;回報undefined所以你可以省略它。

編輯:

你附加的事件兩次,確保只有一次重視它,否則它會導致(如你注意到)意外的行爲像連接類,並立即再次刪除。

它與「Return」一起工作的原因是該函數僅運行一次,因爲它在到達時會引發錯誤。

使用jQuerys .live()(或對於較新版本使用.on(),因爲此處不建議使用實況)自動將點擊事件附加到您添加的每個新行。 jQuery live Docs

+0

+1 ya notice notice – shareef

+0

ya但是它不會再次觸發事件。這是奇怪的事情 – James