3

私は Drupal を使用しています。はぁ。テーブルは<caption>クラス/IDなしで出力されるため、テーブルのキャプションに「new」という単語を追加しようとしていますが、そのテーブルに「GW6D」で始まる製品が含まれている場合のみ..

テーブルはビューを介して動的に出力されるため、クラスを追加するために HTML 内のキャプション タグに直接アクセスすることはできません。(すべてのキャプションにそのクラスがあるため、テンプレートでは実行できません。そのため、適切な製品のないテーブルのキャプションを選択してそのクラスを削除する方法を見つけようとします)

私はもう試した:

var target = $("table.views-table td:contains('GW6D')").closest("table");
$(target).each(function(){
    $(this).prepend('<span class="newProdStyling">New</span>');
    });

どちらがその言葉を当てはめます。そのセレクターに「tr」、「td」を入れることはできますが、使用すると実際のタグをターゲットにできないようです.closest("caption");<caption>現時点では、このスニペットは各製品に「new」を追加するため、現在作成している「ニュース」が多すぎますが、タグを先頭に追加したいだけです。

私もjquery 1.3.2で立ち往生していますが、ターゲティング<caption>がバージョン固有であると言うものは見つかりませんでした。

ベアボーン jsfiddle: http://jsfiddle.net/UbtmJ/4/

4

2 に答える 2

2

<caption>要素の親ではありませんtd(そのため、要素closestが見つかりません)。でも中にある<table>のでそこまで来たら下に降りないといけません。

var target = $("table.views-table td:contains('GW6D')").closest("table").find('caption');
$(target).prepend('<span class="newProdStyling">New</span>');
于 2013-10-08T18:58:13.207 に答える
1

.closest()一致するものを「見回す」のではなく、DOM ツリー内の現在の要素の祖先をたどります(こちらのドキュメントを参照してください)。

で表を見つけたら、キャプションを見つけるために.closest('table')にトラバースする必要があります。そのための最も簡単な関数は..find()

したがって、ターゲットは次のようになります。

var target = $("table.views-table td:contains('GW6D')").closest("table").find("caption");

ちなみに、これらすべての結果は jQuery オブジェクトなので、$()後でラップする必要はありません。これで問題ありません:

target.each(function(){
    $(this).prepend('<span class="newProdStyling">New</span>');
});

これは次のようになります。

$("table.views-table td:contains('GW6D')")
    .closest("table")
    .find("caption")
    .each(function(){
        $(this).prepend('<span class="newProdStyling">New</span>');
    });
于 2013-10-08T19:01:09.380 に答える