我有这样一段代码。我在表单上有 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?
如果复选框是按组或集组织的,我通常这样做的方法是将数组名称添加到复选框组并在 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')
尝试使用如下所示的.find
和.filter
,
$('#'+id).find('input[type=checkbox]').filter(':checked').each(function () {
//..
您可以使用:checkbox
而不是长input[type=checkbox]
$('#'+id).find(':checkbox').filter(':checked').each(function () {
如果您的页面中有多个具有该 ID 的元素,IE 可能会窒息。但是我通常用于您正在做的事情的模式更像是这样的:
$('#' + id)
.find('input[type=checkbox]:checked')
.each(function() { /...
您可以使用.find(':checkbox:checked')
代替第二行,但使用上述代码应该可以获得更好的性能。 [type=checkbox]
可以在现代浏览器中使用本机方法来提高效率。此外,.find(':checkbox')
显然让jQuery检查div中的每个元素,看看它是否与:checkbox
匹配,即使是不是输入的元素(所以它们不可能是复选框)。这可能已经在最新版本的jQuery中解决了,但据我所知。