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 回答
1

您的每个功能都应该使用this

$(".niceCheck").each(function() { 
    if ($(this).is(":checked")) { 
        price += this.value;
    } 
}); 
于 2013-06-24T14:55:41.977 回答