2013-04-12 29 views
2

我有一張表。當單擊一行時,會給出.active,並且該行突出顯示。我需要通過其他方式來改變選中的行,而不是點擊它。對於我的例子,我選擇了下一個按鈕。使用JQuery來切換表的選定行

http://jsfiddle.net/dHxKW/

我能做到後面時,得到表或其他任何類似的結束會發生什麼邏輯。

我只是需要幫助搞清楚如何獲得類的活動 TR的索引,以便我可以增加索引,然後我可以給下一行活動類......這就是我需要的做...如何獲得該行索引。

這是一些的東西,我已經試過了不行......

alert($('table tr .active').index()); 

    var row = $('table tr.active').first(); 

    alert(row.index()); 

    alert($("table").index($('table tr .active'))); 

這是我用什麼作爲參照(https://stackoverflow.com/a/469910/623952

var index = $("table tr").index($(this)); 

但我不能得到正確的選擇...

解決方案.....

它會從來沒有工作過...我寫的不好的代碼:

$(this).children("tr").addClass("active");(此=點擊TR的點擊功能)

但新代碼: http://jsfiddle.net/dHxKW

$("#table_one").on("click", "tr", function() { 
    $(".active").removeClass("active"); 

    $(this).children("td").addClass("active"); 

    // removed line: $(this).children("tr").addClass("active"); 
    $(this).addClass("active"); 
}); 

$('#btn_next').on('click', function() 
{ 
    // right here ********** 

    var n = $('tr.active').next(); 

    $(".active").removeClass("active");  

    n.children("td").addClass("active"); 
    n.addClass("active"); 

}); 

**就像說明一樣,我將這個類添加到tr和td中......我不確定這是否是最好的方法,但是tr沒有背景屬性,所以我只是將它添加到了兩者中。我認爲這可能是我的困惑的原因....

+0

使用。每個和遞增計數器 –

+1

有關使用的.next()上的活動TR是什麼?如果它爲空,父母()。children(0) – Virus721

回答

1

問題是「活動」類沒有被添加到「tr」元素。

在這一行你正在尋找的thistr孩子,但thistr,因此沒有得到孩子選擇:$(this).children("tr").addClass("active");

而是嘗試$(this).addClass("active");

+0

可以把它放在小提琴上嗎?我正在嘗試,它仍然返回-1的索引...我可能會把它放在某個地方不好或什麼東西。只需在btn_next點擊的警報中返回值即可。 –

+0

在我原來的答案中有一個錯誤...我在jsfiddle上玩了​​一下之後更新了我的答案 – cfs

1
$('td.active').parent().index('tr') 

將讓你的索引。

jsFiddle example

jsFiddle example 2

順便說一句,在你點擊功能$(this).children("tr").addClass("active");的鏈接似乎什麼也不做,因爲它搜索一個行的子行。

1
var counter = 0; 
var index = -1 

$('table tr').each(function(){ 
    if(! $(this).hasClass('active')) { 
     counter++; 
    } 
    else index = counter; 
}) 
+0

是不是在尋找tr.active元素INSIDE每個選定的tr? – Virus721

+0

我認爲這是正確的PSCoder,但我確定有一個錯誤(因爲我有點生氣) –

+0

是 - 正確的 –

1
$('table tr .active').removeClass('active').parent().next().children('td').addClass('active'); 

這應該這樣做

+0

這裏有一些錯誤,你刪除類到tr和將它添加到td。 – Virus721

+0

不,我將它從tr .active(它是td裏面的tr)中移除,而不是tr.active(它爲null) – UnShame

+0

Ho我的壞... :) – Virus721