2010-12-03 9 views
0

グリーティング、jquery - セレクタについて混乱しました

この初心者は明確化が必要です。これは私のページ内の1つのH3のDOM要素、上記のスクリプトが正しい、すべての要素に適用されること以上であれば...

$("h3").click(function(){ 
     $(this).addClass("silver"); 
    }); 

を、スクリプトのこのビットを考えてみましょうか?

もしそうなら、他のものを除外しながら、特定のDOM要素を(私の例で)「対象」にする方法はありますか?私は連鎖セレクタがこの場合に適用可能になるかどうか疑問に思います。

$("h3 fieldset a").click(function(){ 
     $(this).addClass("silver"); 
    }); 

これは適切なアプローチですか?

ありがとうございます。

+0

マークアップを投稿できますか? –

答えて

1

まさに:ORあなたがターゲットとして、H3

サンプルコードを取得するには()を.find使いたいH3を含む要素を選択することができますあなたはそれについてどうやって行くのですか?

cssでオブジェクトを選択するのと同じ方法でセレクタを考えるようにしてください。

セレクタを適用してjQueryをきれいに保つには、できるだけ具体的にすることをお勧めします。

基本的なルールは、この

$("h3 fieldset a").click(function(){ 
     $(this).addClass("silver"); 
    }); 

はH3タグ内のフィールドセット内のハイパーリンクを選択することになります...(それはしかし有効なHTMLかどうかわからない)

$("h3, fieldset, a").click(function(){ 
     $(this).addClass("silver"); 
    }); 

に対し、希望の広告H3へのクラス銀フィールドセットとハイパーリンク。

simples!

+0

例をありがとうございます。時間をとっていただきありがとうございます。投票した。 – Chris

+0

@Chris心配しないで、喜んで助けてください。あなたがjqueryを手に入れれば、それがどれほどシンプルになるかに驚くでしょう。 –

1

これが私のページ内に1つ以上のh3 DOM要素である場合、上記のスクリプトはすべての要素に適用されますが、正しいですか?

はい

もしそうなら、方法は他のものを排除しながら、への「ターゲット」(私の例あたり)特定のDOM要素がありますか?

はい。多くの方法があります。選択した要素をどのように制限できるかについては、jQuery selectors documentationを参照してください。

0

よくターゲットにしたいH3にクラスを追加できます。

$('.classOnTargetH3').click(....); 

OR

$('elementImediatlySouroundingH3').find('h3').click(....); 
+0

どちらが速いですか? find()メソッドを使うか、単にh3タグのIDを指定して呼び出すのですか? – Chris

+0

を追加し、idでdom要素を参照するのが最も速い方法です – user406905

1

最初の質問に答えるには、はい、$( "h3")がすべてのH3要素に適用されます。

選択肢を絞り込むには、さまざまなオプションがあります。それらのすべてをここで見る:jQuery Selectors。最良の選択肢は、IDをターゲットにすることに関心のある要素を割り当てることです。

<h3 id="firstSection">Headline!</h3> 

そして、あなたは、このようにアクセスすることができます

$("#firstSection") 

それとも、あなたが唯一の最初のH3要素をしたい知っている場合は、このような、より迅速かつ汚い何かを行うことができます

$("h3:first") 
+0

例をありがとう。助けになる。投票した。 – Chris

0

あなたはh3にクラスを与える必要があります:

このように、$( "。reto")のような項目を選択します。

1

要素にidを入れて1つの要素を選択します。

<h3 id="make-silver">text</h3> 

$("h3#make-silver").click(function(){ 
    $(this).addClass("silver"); 
}); 
+0

要素にIDがある場合は、 'h3'部分をオフにしておく必要があります。 –

1

はい、「h3」セレクタを使用すると、ページのすべてのh3タグにクリックイベントが追加されます。

2番目の例のようにセレクタをチェーンすることはできますが、DOMを解析して一致する要素を検索するときにjQueryで余分なオーバーヘッドが発生します。最適なオプションは、ターゲットとするh3タグにidを追加し、次のようなものを使用することです。

$("#h3Id").click(function(){ 
    $(this).addClass("silver"); 
}); 
関連する問題