2012-02-24 40 views
0

我在我的HTML中使用表格網格,並在每行中單擊特定的col時,我使用<tr>動態創建了一行。附加行用於提交數據到服務器並在提交後將其刪除。現在我想除此之外,表格的行號也將被髮送到服務器。在使用jQuery時找出表中的元素(使用類)

因爲我正在添加要編輯的行,因此表格會動態更改。我想通過給每個<tr>一個名爲task_entry的類並通過計算.task_entry元素的數量來解決這個問題,我將能夠找出我在哪一行。但是,我無法讓這個工作。我試圖使用$(".task_entry").index(this),但它返回-1。

任何人都可以幫忙嗎?

+0

如果您要添加的行dinamically那麼它將不會被JavaScript的回升。在這種情況下,您需要使用[jQuery live](http://api.jquery.com/live/) – Alfonso 2012-02-24 14:35:15

回答

1

不要使用.live(),因爲它已被棄用。

請嘗試打這個小提琴:http://jsfiddle.net/mB49c/1/

基於它的結構:

$(document).ready(function() { 

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

     //count the row. 0 based. If you want to start at 1, add 1 
     var my_row = $(this).parent('tr').index('table tr'); 

     $('table').append('<tr class="saving"><td>Col 1</td><td>Col 2</td><td>Col 3</td><td>Col 4</td><td>Col 5</td></tr>'); 


     alert('You clicked on row ' + my_row + ' run some code.. for instance AJAX'); 

     //If using AJAX, add this as a Success callback 
     $('.saving').remove(); 
    }); 
}); 
+0

謝謝,應該這樣做。 – 2012-03-07 09:29:08

0
$(function() { 
    $("table td").click(function() { 
    var this_is = $(this).attr("id"); 
    var this_val = $(this).html(); 

    alert(this_val) 

    }); 
}); 
0

請檢查你的情況是什麼this。它可能是col,你點擊?然後$(".task_entry").index($(this).closest('tr'))應該做的伎倆。