2011-12-07 82 views
0

我有一個通過循環數據庫條目生成的html表。在行上是一個編輯按鈕。jquery - 用表格替換行

<tr id="<?php echo $i; ?>"> 
... 
<td><button id="editbutton" onClick='edit("<?php echo htmlentities($_SERVER['REQUEST_URI']); ?>","<?php echo $result_cameras[$i]["camera_name"]; ?>", "<?php echo $camera_quality; ?>", "<?php echo $camera_status; ?>", "<?php echo $email_notice; ?>", "<?php echo $result_cameras[$i]["camera_hash"]; ?>")'>Edit</button></td> 
... 
</tr> 

如果您單擊按鈕,它會生成一個表單。現在,表格只放在桌子下面。這裏是編輯功能:

function edit(to, cameraname, cameraquality, camerastatus, emailnotice, camerahash) 
{ 
var mydiv = document.getElementById("editform"); 
var myForm = document.createElement("form"); 
myForm.method = "post"; 
myForm.action = to; 

//camera name 
var label = document.createElement("label"); 
label.for = "text"; 
label.innerHTML="Camera name: "; 
myForm.appendChild(label); 

var myInput = document.createElement("input"); 
myInput.setAttribute("name", "camera_name"); 
myInput.setAttribute("value", cameraname); 
myForm.appendChild(myInput); 

//bunch of other code for different parts of the form... 

//submit changes button...doesn't do anything yet... 
mySubmit = document.createElement("input"); 
mySubmit.type = "button"; 
mySubmit.name = "apply_changes"; 
mySubmit.value = "Apply changes" 
myForm.appendChild(mySubmit); 

//cancel changes button...doesn't do anything yet... 
myCancel = document.createElement("input"); 
myCancel.type = "button"; 
myCancel.name = "cancel_changes"; 
myCancel.value = "Cancel" 
myForm.appendChild(myCancel); 

mydiv.appendChild(myForm); 

} 

我想要做的是將表中的行替換爲此表單(以某種形式很好的格式)。我想我可以使用jquery,因爲我有一個id,可以循環訪問表格行。例如:

var js = jQuery.noConflict(); 
js(document).ready(function(){ 
    js("#editbutton").click(function(){ 
    js('#0').hide(); 
    }); 
}); 

這表明我可以通過硬編碼第一個元素(#0)來隱藏第一行。我只是不知道如何根據我剛剛選擇的編輯按鈕行來拉入ID。然後更改此行以顯示錶單。

+0

我對嗎?你想要生成一個整個表格的形式,還是隻是一行? –

+0

只是一排。當您單擊該行中的編輯按鈕時,它僅在該行中打開一個表單。 – Tom

回答

2
$(document).ready(function() { 
    $('#editbutton').click(function() { 
     $(this).closest('tr').hide(); 
    }); 
}); 
+0

最接近看起來像一個偉大的功能在這裏使用...但它不起作用。由於某種原因,它只隱藏了第一行。有任何想法嗎? – Tom

+0

這是因爲我告訴它隱藏第一行; p $(this).closest('tr')'正在檢索'#editbutton'所在的當前行。一旦你有了行,你可以執行任何你需要的邏輯來抵抗它。 – JesseBuesking

+0

但是根據我所瞭解的最接近的(這並不多),你給我的東西仍然適用於我的其他行。如果我點擊任何其他行的編輯按鈕,我會認爲它會隱藏相應的行。但點擊任何其他行上的編輯按鈕什麼也不做? – Tom