8

との両方.is(':checked').prop('checked')使用して、チェックボックスがチェックされているかどうかをテストできます。

チェックされた状態を照会するこれら 2 つの方法の間に興味深い/重要な違いはありますか、それともほとんど個人的な好みの問題ですか?

4

3 に答える 3

9

どちらも同じことを確認することになります。

1.6.0 以降を使用している場合prop('checked')は、最も直接的な jQuery の方法です。jQuery は、何をすべきかを判断するためにセレクターを解析および処理する必要はありません。【下記注意事項】

(1.6.1 以降) attr('checked')1.5.x 以前と同じように再度使用することもできます。

または、要素に直接移動することもできます。少なくとも 1 つの要素が一致したことがわかっている場合xは、次のようにテストする必要があります

if (x[0].checked) { /* ... */ }

確信が持てず、賭けをヘッジしたい場合:

if (x[0] && x[0].checked) { /* ... */ }

ただし、非常にタイトなループに陥っていない限りパフォーマンスの違いは問題にならないため、最も読みやすいと思われるものを使用してください。最後のものは非常に読みやすく、非常に高速であることを知っているので、それらを使用しています。しかし、それらが使いにくい場合は、好きなものを使用してください。あなたがそれを気に入っていて、それから実際のパフォーマンスが見られないのであれば、使用しても害はありませんis(':checked')(これは、ある種のタイトなループを妨げる可能性は低いです)。


注:より直接的な度合いは、ブラウザーによって異なります。プロパティを直接チェックするだけではなく、最初にいくつかのレベルの間接的なチェックを行います。必ずしも非常に複雑ではありません。たとえば、WebKit ブラウザーでは、WebKit が要素がセレクターに一致するかどうかをテストする機能を提供し、ネイティブにサポートするため、かなり直接的です。Firefox (そしておそらく IE) では、この一見単純なセレクターが Sizzle の根幹を通り抜けるため、膨大な数の関数呼び出しが発生します。propispropisis:checkedis

于 2011-06-14T07:22:00.633 に答える
2

オブジェクトのプロパティに直接アクセスし、読みやすいので、prop('checked')(古いバージョンのjQueryをサポートする必要がない限り)自分自身を使用します。checked

is(':checked')文字列の解析などで少し余分なオーバーヘッドを実行します。私は通常、要素を選択する:checkedときに予約します。

于 2011-06-14T07:22:39.567 に答える
0

注意すべきことの 1 つ.prop('checked')は、セット内の最初のチェックボックスがオンになっているかどうかのみを判断するのに対して、.is(':checked')セット内の少なくとも 1 つのチェックボックスがオンになっている場合は true を返すことです。

そのため、セット内のいずれかのチェックボックスがオンになっているかどうかを判断しようとしている場合は、使いやすいと考えることができますis(':checked')

于 2019-10-18T12:52:58.747 に答える