2013-05-29 62 views
-1

我有一個TABLE,每個TABLEROW都有一個div,它包含onclick'deleteRow(rowIndex)',其中rowIndex是據說被點擊的行的索引。 的問題是,任何時候我嘗試主動改變該行的onclick這樣的一個,它怪胎,並自動當我改變它稱之爲:更改onclick()裏面onclick()

row.onclick = deleteRow(rowIndex); 

我也使用prototype.js。

這裏是我的處理程序:

deleteRow = function(rowIndex) { 
    var table = $('tableElmt'); 
    table.each(function(row, index) { 
     if(index == rowIndex) 
      row.onclick = deleteRow(index); 
    }) 
} 

當我改變的onclick這樣,它再次調用deleteRow即時,進入一個循環,我不能找出原因。

我認爲這與我在deleteRow()中調用deleteRow()的方式有關,儘管它也可能是我錯誤地更改了'onclick'。

我也試過這種處理在錶行點擊:

row.observe('click', deleteRows(rowIndex)); 

但它做同樣的事情。此外,這與在html中所有行已經存在的onclick()事件處理程序衝突,我不知道如何處理。

如何更改onclick()事件處理程序中的onclick()事件處理程序?

+0

相關的http://stackoverflow.com/questions/4506219/how-to-change-onclick-event-with-jquery –

回答

4

您正在調用deleteRow函數,並將其結果分配給onclick處理函數。 你所想實現的是:

row.onclick = (function(index){ 
return function(){ 
    deleteRow(index); 
} 
})(index); 
+1

+1正確的答案。 –

+0

謝謝你親切的先生。完全正確。 –