我对 jQuery 有点陌生。我在以下代码工作时遇到问题,特别是重置按钮:
<script>
$(function()
{
$(document).ready(function()
{
$("input[type=checkbox][checked]").each(
function()
{
var cell = $(this).closest('td');
if($(this).attr('checked'))
{
cell.toggleClass('check');
}
});
});
$('#bay :checkbox').click(function()
{
var cell = $(this).closest('td');
cell.toggleClass('check');
}).change();
$('#reset').click(function()
{
$('#bay input[type=checkbox]').each(function()
{
var cell = $(this).closest('td');
if ($(this).is('checked'))
{
//alert("yes");
cell.addClass('check');
}
else
{
cell.removeClass('check');
//alert("no");
}
});
});
});
</script>
<input type="checkbox" checked>Blah
出于某种原因,当单击重置按钮时,脚本仅执行 cell.addClass if 语句。基本上,重置按钮起到恢复的作用,如果 HTML 代码中没有默认属性,则应该从 each 中删除添加的类 #check。
我尝试了一种低效的方法来检查带有选中属性的输入复选框,而没有一个在 FF 和 Chrome 中运行良好,但在 IE 中失败。只有按两次重置按钮才会起作用。
$('#reset').click(function()
{
$("input[type=checkbox][checked]").each(
function()
{
var cell = $(this).closest('td');
cell.addClass('check');
});
$("input[type=checkbox]:not([checked])").each(
function()
{
var cell = $(this).closest('td');
cell.removeClass('check');
});
});
任何帮助将不胜感激!
编辑:根据请求,以下是带有工作(但无效)jQuery 代码http://jsfiddle.net/uxjCT/9/的 HTML 代码示例。
Edit2:*我稍微简化了代码的“重置”部分,但它仍然无法在 IE 中工作。任何人都知道这是否是一个无法解决的 IE 问题?本质上,对于在 HTML 中具有该属性的输入复选框以及样式表,我试图让重置功能重置为默认的 HTML“已检查”属性。IE是目前唯一痛苦的罪魁祸首。
$('#reset').click(function(){
$('#bay input[type=checkbox]').each(function()
{
var attr = $(this).is("[checked]");
var cell = $(this).closest('td');
if (typeof attr !== 'undefined' && attr !== false)
{
alert("checked");
cell.addClass('check');
}
else
{
alert("unchecked");
cell.removeClass('check');
}
});
});
由于某种原因,它var attr = $(this).is("[checked]");
不会在 HTML 中选择“checked”属性,但如果复选框已被选中,则会选择,这可能与默认的 HTML 属性不同。
再次,任何帮助将不胜感激!
演示代码:http: //jsfiddle.net/uxjCT/55/