2011-08-26 143 views
1

我有這個函數可以將帶有可編輯類的單元格(td.editable)轉換爲輸入字段。現在,您必須將該行傳遞給該函數。例如:editRow(myRow)如何傳遞一個變量作爲函數參數

所以使用this.parentNode.id,我得到該行的id。但是當我將該值作爲參數傳遞給editRow函數時,它什麼都不做。

我認爲函數認爲rowId是行的實際名稱,而不是使用rowId變量的內容作爲行的名稱。

function editRow(row) { 
$('td.editable',row).each(function() { 
    $(this).html('<input type="text" value="' + $(this).html() + '" size="10" />'); 
}); 
}  

/* click on cell with .editable class */ 
$(".editable").click(function() { 
    rowId = this.parentNode.id; 
    editRow(rowId); 
}); 

回答

4

editRow不佔用行ID,它佔用整行(DOM元素本身)。你只是傳遞錯誤的數據。嘗試:

$('.editable').click(function(){ 
    editRow(this.parentNode); 
}); 
+0

+1 - 打我吧:-) –

+0

是的。 ['jQuery(selector,[context])'](http://api.jquery.com/jQuery/) - 「** context ** - DOM Element,Document或jQuery用作上下文」 – Wiseguy

+0

謝謝全部爲您的解決方案。它現在很好用!我現在只有2個問題。 1)如果我點擊該行,它按預期工作。但是,如果我點擊另一行,它會進入編輯模式,但我首先點擊的行也保持編輯模式,所以現在我在編輯中得到了兩個或更多行。我試過'返回false',但它沒有幫助。 2)如果我點擊同一行兩次或更多次,它會一直添加輸入字段。 有人可以幫我這些嗎? – leonel

0

鑑於你在這裏的功能:

/* click on cell with .editable class */ 
$(".editable").click(function() { 
rowId = this.parentNode.id; 
editRow(rowId); 
}); 

你傳入的ID您editRow功能。所以裏面editRow,你可以這樣做:

function editRow(row) { 
    $('#' + row +' td.editable').each(function() { 
     $(this).html('<input type="text" value="' + $(this).html() + '" size="10" />'); 
    }); 
} 

'#' 是jQuery的ID選擇

相關問題