1

こんにちは私はこのhtml構造を持っています。

<span class="radio" style="background-position: 0px 0px; "></span>

スタイルが変わったときの状態を確認したいだけです

<span class="radio" style="background-position: 0px -50px; "></span>

したがって、このコードは一致すると思います。

var isChecked = $('.yleis span.radio[style*="-50"]')?true:false;

console.log(isChecked);

しかし、なぜこれが常にtrueを返すのですか?

4

3 に答える 3

6

セレクターがゼロ要素に一致する場合でも、jQuery呼び出しは常にjQueryオブジェクトを返します。

jQueryオブジェクトの長さをチェックして、何かに一致するかどうかを確認します。

var isChecked = $('.yleis span.radio[style*="-50"]').length > 0;

(Plutorが指摘したように、コロンはセレクターに含めるべきではありません。)

于 2012-08-22T12:35:31.923 に答える
2

空のjQueryオブジェクト(一致する要素がない)は、あなたfalseと空でないオブジェクトを生成すると想定しますtrue。これは真実ではありません-jQueryオブジェクトは常に「何か」です。かどうかを確認したい。代わりに使用してください$(...).length > 0(ブール値が得られます-三項演算子は必要ありません)。

于 2012-08-22T12:34:48.477 に答える
2

jQueryセレクター($('div)など)の結果は常にjQueryオブジェクトになります。これを結果が存在するかどうかのブール値に変換するには、lengthプロパティを確認します。0以外はすべて真です。

var isChecked = $('.yleis span.radio[style*="-50"]').length ? true : false;

ラジオの後:も必要ありません。

http://jsfiddle.net/sfkkh/

于 2012-08-22T12:36:22.890 に答える