2013-06-05 26 views
1

我正在使用jQuery來改變表中某些元素的類。jQuery中的第N個類型通配符?

預期的行爲是,當您單擊<th>時,請在他的所有<td>(在他的專欄中)中添加一個班級。

我有這樣的jQuery:

$(document).ready(function() { 
    $("table.tabla th:nth-of-type(1)").click(function() { 
     $("table.tabla td:nth-of-type(1)").toggleClass('on'); 
    return false; 
    }); 
}); 

它的正常工作中this jsFiddle與第一個兄弟。

嗯,我想使同一所有<th>,但我不知道<th>多少是表(這是一個動態表。)

有沒有什麼辦法讓類似th:nth-of-type(x)

+0

我不知道是否「N型通配符」是表達它的正確形式... if不要請告訴我。 (我不是說英語的人) – Arkana

回答

3

你可以嘗試的jQuery「 .on「動態對象的方法項目,你還需要用$(this)對象查找當前的th值,然後查找它的子項td來切換它們的'on'類。

$(document).ready(function() { 
     $("table.tabla th").on("click", function() { 
      ind = $(this).index()+1; 
      $('td:nth-of-type(' + ind + ')').toggleClass('on'); 
     }); 
    }); 
+2

這不是一個正確的答案,在這裏你正在搜索td下點擊th。但用戶想要將td切換到低於所點擊的th的類別,這意味着與th具有相同索引的td。 –

+0

你說得對,我現在編輯了答案。感謝您指出。 – awavi

+0

不客氣。 –

3

嘗試使用索引()這樣的:

$("table.tabla th").click(function() { 
    $("table.tabla td:nth-of-type("+($(this).index()+1)+")").toggleClass('on'); 
    return false; 
}); 

jsFiddle example

+0

非常感謝!正如我所說,我會選擇@ awavi的答案,因爲他的有用解釋,但這也適用。 – Arkana

1

這將工作:

$(document).ready(function() { 
$("table.tabla th").click(function() { 
    var x = parseInt($(this).index()) + 1; 
    $("table.tabla td:nth-of-type(" + x + ")").toggleClass('on'); 
return false; 
}); 
}); 

演示:http://jsfiddle.net/tymeJV/3HzLf/3/

+0

+1謝謝,這也適用。我會選擇@ awavi的解釋的答案,無論如何謝謝:) – Arkana

1

我把它的工作原理使用this中標識的點擊函數內th點擊的元素的index方法(指數返回一個零基礎值)

代碼:

$("table.tabla th").click(function() { 
    $("table.tabla td:nth-of-type("+($(this).index()+1)+")").toggleClass('on'); 
    return false; 
}); 

這裏小提琴:http://jsfiddle.net/IrvinDominin/eBzYm/

+0

你的jsFiddle沒有更新...仍然與我的代碼;)無論如何,我嘗試用你的JS取代我的JS,並且當我點擊時什麼也沒有發生...... – Arkana

+1

!!我的不好,是另一個版本,用工作代碼更新了主版本 –