0

私のhtmlコードを見てください:

<form action="#" class="check_opt" id="ckPrice">
    <p><input class="niceCheck" type="checkbox" name="" value="0-49">3 millions - 10 millions (21)</p>
    <p><input class="niceCheck" type="checkbox" name="" value="50-99"> >10 millions - 15 millions (7)</p>
    <p><input class="niceCheck" type="checkbox" name="" value="100">15 millions and above (15)</p>
</form>

そしてjQueryコード:

<script type="text/javascript"> 
    $(document).ready(function() { 
        $('#ckPrice :checkbox').click(function() { 
            var price = 'abc'; 
            $(".niceCheck").each(function() { 
                if ($(".niceCheck").is(":checked")) { 
                    price += $(".niceCheck").value(); 
                } 
            }); 
        alert(price); 
        }); 
     }); 
</script>

一番下の jQuery コードのアラート関数は「abc」のみを返します。どうすればいいですか?

4

3 に答える 3

5

変化する:

if ($(".niceCheck").is(":checked")) {
    price += $(".niceCheck").value();
}

に:

if ($(this).is(":checked")) {
    price += $(this).val();
}

あなたの.each()呼び出しは必要な要素をループしており、 経由でそれらを参照する必要があります$(this)。また、jQuery は.val()notを使用し.value()ます。もちろん、異常な値があるため、最終結果は「abc50-99100」のような文字列になります

jsFiddle の例

于 2013-06-24T14:51:56.213 に答える
1

あなたは最初のものに対してチェックしています

 $(".niceCheck").each(function() { 
    var check = $(this);
    if (check.is(":checked")) { 
        price += check.val(); 
    } 
 });
 alert(price); 
于 2013-06-24T14:52:03.950 に答える