0

jQueryセレクターを使用して、選択されているものを表示しています。$(selector).addClass('jquery_green');

// すべてのテーブルを選択 (動作)

html > body > table

// 2 番目のテーブル、4 行目、1 列目を選択 (動作)

html > body > table:eq(1) tr:eq(3) > td:eq(0)

// すべてのテーブル、4 行目、1 列目を選択します(機能しません)何が問題なのか教えていただけますか?

html > body > table tr:eq(3) > td:eq(0)

私が見つけた唯一の代替手段(本当にばかげている):

var baseSelector = "html > body > table";
var selector = "tr:eq(3) > td:eq(0)";

$(".jquery_green").removeClass("jquery_green"); 

var index;
for (index = 0; index < 10000; ++index) {
    sel = baseSelector + ":eq(" + index + ") " + selector;
    $(sel).addClass('jquery_green');
}
4

2 に答える 2

3

同じセレクターで複数を使用することに慣れていません:eq()が、セレクターは

html > body > table tr:eq(3) > td:eq(0)

は、ドキュメント全体の 4 番目のオカレンスを見つけて、 1 つの要素のみを提供し、それが最初の子であることを見つけます。私の理解が正しければ、テーブルが複数ある場合でも、要素は 1 つだけになります。html > body > table tr trtrtd:eq()td

あなたの構造を考えると、おそらく次のように発生によって制限されないand which:eq()を置き換えることができます。:nth-child():first-child:eq()

html > body > table tr:nth-child(4) > td:first-child

そして、いくつかの提案:html >冗長なのでビットを削除できます。ネストされたテーブルがある場合は、 と の> tbody >間に を追加するtabletr、最上位テーブル内のネストされた行/列との一致を避けることができます。

body > table > tbody > tr:nth-child(4) > td:first-child
于 2013-09-01T09:53:43.967 に答える