0

次のコードで使用したいのですhasClassが、うまくいきません。jsfiddle で私のデモを見て、何が間違っているのか教えてください。

<span>
    <input type="text" name="relation" class="IdRelation">
</span>
​

if ($('span').hasClass('IdRelation')) {
  alert("ok");
}​

デモ

4

2 に答える 2

11

<span>クラスを公開するのは要素ではなく、IdRelationその<input>子です。試す:

if ($("span input").hasClass("IdRelation")) {
    alert("ok");
}​

または、実際のマークアップに応じて:

if ($("span > input").hasClass("IdRelation")) {
    alert("ok");
}​

最初のコード スニペットのセレクターは、要素の子孫であるすべての<input>要素に一致しますが、2 番目のコード スニペットのセレクターは、要素の直接の子であるすべての要素に一致します。どちらもサンプル マークアップの要素と一致します。<span><input><span><input>

于 2012-07-26T12:25:00.047 に答える
4

解決

クラスは<span>子である<input>にあるため、jQuery セレクターに追加します$('span input')

if ($('span input').hasClass('IdRelation')) {
  alert('ok');
}​

デモをお試しください。

少し説明

jQueryのドキュメントによる$('span input')と、子孫セレクターです:

特定の祖先の子孫であるすべての要素を選択します。

を使用することもできます$('span > input')。それは子セレクターです:

「親」で指定された要素の「子」で指定されたすべての直接の子要素を選択します。

inputは の直接の子であるため、どちらもあなたの状況に適しています<span>

コードが次の場合:

<div>
    <form>
        <input type="text" name="relation" class="IdRelation">
    </form>
</div>

解は$('div input')またはになります$('div > form > input')

于 2012-07-26T12:24:55.600 に答える