0

我有这样一段代码。我在一个表单上有 4 组复选框,每组都必须分别通过这个功能。ID 变量是放置在每个集合周围的给定 div 的 id

 $('#'+id+' input[type=checkbox]:checked').each(function() {
     var value = $(this).val();
         (...)
 });

在 chrome、firefox 和 IE9 上运行良好。不适用于 IE7/8。

在 IE7/8 上有效的是这个

$('input[type=checkbox]:checked').each(function() {
     var value = $(this).val();
         (...)
 });

所以它可以在没有 div 标识符的情况下工作。我仍然需要能够告诉 IE7/8 我希望它通过哪组复选框。我应该如何容纳该 div 标识符,以便它适用于较旧的 IE?

4

3 回答 3

2

尝试使用.find.filter如下所示,

$('#'+id).find('input[type=checkbox]').filter(':checked').each(function () {
 //..

你可以使用:checkbox而不是 longinput[type=checkbox]

$('#'+id).find(':checkbox').filter(':checked').each(function () {
于 2012-05-09T20:08:21.517 回答
2

如果复选框是按组或集合组织的,我通常这样做的方式是在复选框组中添加一个数组名称并在 jQuery 中使用它。

<input type="checkbox" name="groupone[]"/>
<input type="checkbox" name="groupone[]"/>

<input type="checkbox" name="grouptwo[]"/>
<input type="checkbox" name="grouptwo[]"/>

在 jQuery 中:

$('input[name="groupone[]"]').filter(':checked')
于 2012-05-09T20:11:05.570 回答
1

如果您的页面中有多个具有该 ID 的元素,则 IE 可能会阻塞它。但是我通常用于您正在做的事情的模式更像是这样的:

$('#' + id)
  .find('input[type=checkbox]:checked')
  .each(function() { /...

您可以使用.find(':checkbox:checked')代替第二行,但您应该使用上面的代码获得更好的性能。[type=checkbox]可以在现代浏览器中使用本地方法来提高效率。此外,.find(':checkbox')显然让 jQuery 检查 div 中的每个元素以查看它是否匹配:checkbox,甚至是不是输入的元素(因此它们不可能是复选框)。这可能已在最新版本的 jQuery 中解决,但我不知道。

于 2012-05-09T20:22:20.233 回答