2011-05-03 78 views
1

我有点新的jQuery的。我在用下面的代码工作的问题,特别是复位键,问题与检测默认的HTML checked属性的复选框

<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代码中没有默认属性,则应从每个中删除添加的类#check。

我想这样做输入复选框的检查与检查属性的低效的方法,和一个没有,跑在FF和铬细,但在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'); 
    }); 
}); 

任何帮助将不胜感激!

编辑:每请求,以下是HTML代码的样品重量/工作(但低效的)jQuery代码http://jsfiddle.net/uxjCT/9/

编辑2:*我简化了代码的“重置”部分,但它仍然不能在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中“选中”属性,但是会拿起如果复选框已被选中,这可能比默认的HTML属性不同。

同样,任何帮助,将不胜感激!

Demo'd代码:http://jsfiddle.net/uxjCT/55/

+0

可否请你发布一些HTML标记? – rahul 2011-05-03 05:58:19

回答

1

这应该工作。修改您的代码

$('#reset').click(function(){ 
    $('#bay input:checkbox').each(function() 
    { 
     var cell = $(this).closest('td'); 

     if (this.checked) 
     { 
      //alert("yes"); 
      cell.addClass('check'); 
     } 
     else 
     { 
      cell.removeClass('check'); 
      //alert("no"); 

     } 
    }); 
}); 

您可以试用working demo

+0

这增加了类“检查”到了新检出的投入,但不会恢复到复选框是有一个默认的HTML“选中”属性。虽然接近。 – 2011-05-03 13:16:55

2

的代码检查,如果被选中复选框是

$(this).is(':checked') 

$(this).is('checked') 

你的代码与这种变化。

1

试试这个...

$('#reset').click(function(){ 

     cell.removeClass('check');//First remove class from all cell 
     $('#bay :checked').each(function() 
     { 
       cell.addClass('check');//add class only to checked cells 

     }); 
    }); 
+0

出于某种原因,该代码设置好一切作为类“检查”中点击“重置”按钮时。 – 2011-05-03 13:14:17