0

だから私がやりたかったのは、すべてを選択し、すべてをオフにするマスターチェックボックスを作成することでした. 私が作成したものよりもうまく機能するこの jquery snipt を見つけました。

$("#checkboxSort").live( 'change', function() {
  $(".apply-single").attr( 'checked', $( this ).is( ':checked' ) ? 'checked' : '' );
});

私が持っている質問は、このセクションが正確に何を言っているのかということです:

$( this ).is( ':checked' ) ? 'checked' : '' 

「これ」が「.apply-single」であり、「チェック」されているかどうかを確認することは理解していますが、セクションの残りの部分は英語で何を意味していますか? それが何を意味するのかについては私の考えがありますが、私が推測するよりも、誰かが知っていることを聞くほうがずっと好きです.

助けてくれる人に感謝します。

4

7 に答える 7

2

これは三項演算子と呼ばれます。一般的な形式は

[boolean expression] ? [expression A] : [expression B]

ブール式がに評価される場合は式Aに評価され、ブール式がに評価されるtrue場合は式Bに評価されfalseます。

于 2011-01-10T16:41:52.807 に答える
2

「これ」は「.apply-single」だと理解しています

いいえ。this実際には要素を指し#checkboxSortます。

?JavaScriptの条件演算子です。

あなたが尋ねているコードの特定のビットは手段(擬似コード):

if the element with ID "checkboxSort" is checked:
    check all elements with class "apply-single"
else:
    uncheck all elements with class "apply-single"

要するに、コードスニペット全体がこれを行います:

idを持つ要素の変更をリッスンしますcheckboxSort
このようなchangeイベントが発生した場合は、checkedクラスapply-singleを持つすべての要素の状態を要素の新しいchecked状態に設定し#checkboxSortます。


恥知らずな自己宣伝:これをうまく処理するために、ちょっとしたjQueryプラグインを作成しました。それをチェックしてください

于 2011-01-10T16:45:57.010 に答える
1

this実際には#checkboxSortコンテキストではありません.apply-single。したがって、すべて.apply-singleをのチェック済み属性に設定しています#checkboxSort

三項演算子です。ifステートメントと同様に、単にインラインです。

于 2011-01-10T16:42:45.707 に答える
0

これはの短縮形です

if($(".apply-single").is(':checked')) {
    $(".apply-single").attr("checked", "checked");
} else {
     $(".apply-single").attr("checked", "");
}
于 2011-01-10T16:42:32.417 に答える
0

この行は、次のように機能する三項演算子を使用しています。

  <condition>?<consequent>:<alternative>

チェック$( this ).is( ':checked'ボックスがオンになっているかどうかに応じて、trueまたはfalseを返す条件も同様です。trueの場合、「チェック済み」が属性になり、そうでない場合は「」が属性になります。

于 2011-01-10T16:42:44.937 に答える
0

英語では、この項目がチェックされている場合は、CSSクラスが「apply-single」であるすべてのHTML要素の「checked」属性を「checked」に設定します。そうでない場合は、空の値にします。

ただし、実際の結果がchecked=""の属性にならないことを確認してください。

チェックボックスの場合、チェックされていない状態は、checked = ""で表されるのではなく、チェックされた属性がまったくないことで表されます。

于 2011-01-10T16:47:17.563 に答える
0

.live() は非推奨です。代わりに .on() を使用してください。

これを確認してください:http://jsfiddle.net/loginet/Rdc5r/

$(document).ready(function () {

    $("#checkboxSort").on('click', function () {
        $(".apply-single").prop("checked", $("#checkboxSort").prop("checked"));
    });

    $('.apply-single').on('click', function () {
        var total = $('input:not(#checkboxSort)').length;
        var checked = $('input:not(#checkboxSort):checked').length;         
        if (total == checked) {
            $('#checkboxSort').prop('checked', true);
        } else if (total > checked || checked == 0) {
            $('#checkboxSort').prop('checked', false);
        } 
    });    
});

そしてHTML:

<p>
    <input type="checkbox" id="checkboxSort" />Check/Uncheck All</p>
<hr/>
<p id="p">
    <input type="checkbox" class="apply-single" />Checkbox 1
    <input type="checkbox" class="apply-single" />Checkbox 2
    <input type="checkbox" class="apply-single" />Checkbox 3
</p>
于 2014-03-01T21:00:09.763 に答える