2012-06-28 36 views
2

我對web開發很陌生。我目前使用tablesorter jquery插件來創建一個動態表,用戶可以在其中添加和刪除行。我在點擊時改變新創建的行的背景顏色時遇到問題。它適用於在html中硬編碼的行。下面是相關代碼:Javascript tr用新創建的行點擊事件(更新css)

$(document).ready(
    function() { 
     $('table.tablesorter td').click(
      function (event) { 
       $(this).parent('tr').toggleClass('rowclick'); 
       $(this).parent('tr').siblings().removeClass('rowclick'); 
     }); 
    } 
) 

rowclick是一個CSS類在這裏:

table.tablesorter tbody tr.rowclick td { 
    background-color: #8dbdd8; 
} 

我曾嘗試加入以下我增加了一個新的行javascript函數:

var createClickHandler = 
     function(newrow) { 
      return function(event) { 
       //alert(newrow.cells[0].childNodes[0].data); 
       newrow.toggleClass('rowclick'); 
       newrow.siblings().removeClass('rowclick'); 
      }; 
     } 
row.onclick = createClickHandler(row); 

當我單擊新行時,警報會正確顯示行的第一列中的文本。但是,我的新行不響應css類。有人有主意嗎?提前致謝。

我還要提到了我與應用clickHandler事件之前更新的tablesorter:使用.on()從jQuery的1.7

$('table.tablesorter').on('click','td', function(){ 

$("#TASKTABLE").trigger("update"); 
$("#TASKTABLE").trigger("appendCache"); 

回答

0

代表您可點擊td元素,如

從jQuery 1.7開始,.on()方法提供了所有功能需要附加事件>處理程序。有關從較舊的jQuery事件方法轉換的幫助,請參閱.bind(),.delegate(),>和.live()。要移除使用.on()綁定的事件,請參閱.off()。要附加運行>只有一次,然後刪除自身的事件,請參閱。一()

+0

謝謝,現在的偉大工程。這實際上是做什麼的?爲什麼我以前的版本沒有工作? – yalechen

+0

這是一個較新的jQuery方法來替換現在不推薦使用的'.live()'方法。實際上,通過委託給他們點擊事件,等待現有的和未來**創建的'td'元素。閱讀更多:http://api.jquery.com/on –

0

試試這個:

​​
+0

非常感謝你!一整天都陷在這個問題上。 $()實際上是什麼意思。我有點跳到這個項目與0 html/javascript的經驗。 – yalechen

+0

@yalechen歡迎您,'$()'是jQuery選擇器,它返回一個jQuery對象,然後您可以使用jQuery方法來操作選定的元素。 – undefined