4

jQuery と DOM の ID とセレクターで理解できない奇妙なことに常に遭遇しています。通常、私はそれらを回避するだけですが、これを一度だけダウンさせたいと思っています。次のマークアップを検討してください。

<div id="accordionWrapper"><p><a class="expandall" href="#">Test</a></p></div>

私は次のjQueryクリック機能を持っています<a>:

//works fine
jQuery('a.expandall').click(function() {...whatever...});

ただし、次の場合はそうではありません。

//fails
jQuery('#accordionWrapper p a.expandall').click(function() {...whatever...});

...私にはわかりません。これは CSS や jQuery について私が理解できないことですか、それとも...?

4

3 に答える 3

5

実際、あなたの理解はまったく間違っていません。これがJsBin(JsFiddleがダウンしているようです)で、正確なマークアップと正確なjQueryコードがすべて機能していることを示しています。

http://jsbin.com/inuqez/4/edit

したがって、指定した2番目のjQueryセレクターで問題が発生した場合は、別の問題が発生する可能性があります。詳細を教えていただければ、お手伝いできる場合があります。それ以外の場合は、コードを注意深く調べて、同じIDを持つ複数の要素などの明らかなエラーがないことを確認してください(@Fredericが述べたように)。

于 2012-06-29T06:05:56.720 に答える
0

試す :

jQuery('div#accordianWrapper p a.expandall').click(...)
于 2012-06-29T06:02:19.177 に答える
0

最初の方法:

jQuery('a.expandall').click(function() {...whatever...});

... DOM のどこかに存在するクラス「expandall」を持つ任意のアンカー要素のクリックを定義します。

2 番目の方法:

jQuery('#accordionWrapper p a.expandall').click(function() {...whatever...});

... を持つ要素の子孫である段落要素の子孫であるクラス「expandall」を持つ任意のアンカー要素のクリックを定義しますid="accordionWrapper"。「#accordionWrapper」の要素タイプは指定していないため、問題ではないことに注意してください。

そのIDを持つ「要素」ではなく、そのIDを持つ「要素」と言います.htmlが有効な場合、特定のIDを持つ要素は1つだけになるためです。複数の要素に対して id を繰り返した場合、(ほとんどのブラウザーで) id で選択すると、それらの要素の 1 つ (最も一般的には最初の要素) のみが返されることがわかります。

問題が id の再利用によるものであると仮定すると、複数の類似要素に同じidではなく同じクラスを与えることで修正できます。

于 2012-06-29T06:25:46.750 に答える