2013-06-24 36 views
0

请参阅我的html代码:jQuery - 如何在点击事件jquery中使用each()?

<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' 的报警功能。我应该怎么做?

+0

这是jQuery代码:

+0

'input'元素不应该包含在'p'元素中。改用'label'。同样,你的'+ ='会给出一个奇数结果,其值为“0-49”,“50-99”和“100” - 选择全部3会给你“0-4950-99100”。 –

+0

@JamesDonnelly谢谢你的回答。嗨,我想选择值被检查。 –

回答

5

变化:

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

到:

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

.each()呼叫通过你想要的元素循环,你需要通过$(this)引用它们。另外jQuery使用.val()而不是.value()。当然,既然你有不寻常的价值您的最终结果将是一个字符串,类似“abc50-99100”

jsFiddle example

1

您检查,对你的每一个第一个

$(".niceCheck").each(function() { 
    var check = $(this); 
    if (check.is(":checked")) { 
     price += check.val(); 
    } 
}); 
alert(price); 
+0

我应该做$(this).val();而不是$(“。niceCheck”).value();它不起作用。此外,我想使用click事件,然后使用each()方法来检查所有的值。谢谢你的回答。 –

+1

对不起,我正要纠正这个问题,但有一个小问题需要紧急响应。 – Edorka

+0

没问题!当你修复你的答案并且现在可以工作时,我非常高兴。非常感谢!喜。 –

1

函数应该使用this

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

感谢您的建议! –