微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

复选框和JQUERY:“被选中”总是FALSE

代码在下面,复选框始终为FALSE。但在页面上是不同的。它没有被检查或取消选中。
<script type="text/javascript">
 $('.cbOzelHastaAdi').unbind('click');

 $('.cbOzelHastaAdi').click( function() {

    var parentDiv = $(this).parent().get(0);
    var cbs = $(parentDiv).find('table input:checkBox');

   if($(this).attr("checked") === "true") {
        cbs.each(function() { $(this).attr('checked',false); });
    }
    else{
        cbs.each(function() { $(this).attr('checked',true); });
    }

})

</script>

解决方法

其中一个问题是您在顶部复选框和标签上的跨度上具有检查属性,并将事件处理程序绑定到跨度,因此检查将始终在跨度上保持检查。

我已经将事件处理程序移动到复选框,而是将代码整理好了。虽然我不相信在HTML元素上构建您自己的属性,即跨元素上的已检查属性(我认为XHTML严格验证失败了),但我不知道这样做是否被认为是最佳做法。

我可以看到你正在使用ASP.NET,基于ID的错误 – 你可以使用服务器端<%= myControl.ClientID%>以获取被发送到客户端的HTML格式的渲染ID。

Working Example here

$(function() {     
        $('#rptOzel_ctl00_rptOzelHastalar_ctl00_cbOzelKurumHastasi').unbind('click');
        $('#rptOzel_ctl00_rptOzelHastalar_ctl00_cbOzelKurumHastasi').click( function() {

           var cbs = $('table input:checkBox');  

           if($(this).is(':checked')){
               cbs.each(function() { $(this).attr('checked',true); });
           }
           else{
            cbs.each(function() { $(this).attr('checked',false); });
           }

        });
    });

编辑:

为了回应你的评论,你有几个选择来解决客户端。如果您在aspx页面中编写jQuery,那么您可以直接使用

$(‘#<%= cbOzelKurumHastasi.ClientID%>‘)

代替

$( ‘#rptOzel_ctl00_rptOzelHastalar_ctl00_cbOzelKurumHastasi’)

如果你的jQuery在一个外部的脚本文件,那么你可以把它放在你的aspx页面

<script type="text/javascript">
var cbOzelKurumHastasi = '#<%= cbOzelKurumHastasi.ClientID %>';
</script>

然后在外部脚本文件中使用该变量

$(function() {     
            $(cbOzelKurumHastasi).unbind('click');
            $(cbOzelKurumHastasi).click( function() { ...

其他选项请看这个问题和答案 – How to stop ASP.NET from changing ids in order to use jQuery

原文地址:https://www.jb51.cc/jquery/182083.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐