jquery勾选复选框IE问题

Posted

技术标签:

【中文标题】jquery勾选复选框IE问题【英文标题】:jquery checked checkbox IE problem 【发布时间】:2011-02-01 06:59:56 【问题描述】:

我在验证是否在 Internet Explorer 上使用 jquery 选中了复选框时遇到问题。 这是我正在使用的代码:

if ($('#chkjq_1').attr('checked') == true)

它在 Firefox 或 Chrome 上运行良好,但在 Internet Explorer 7 上,条件始终为 false,因为浏览器以这种方式设置属性:

<input id="chkjq_1" type="checkbox" CHECKED/> IE7

正确的方法如下:(Firefox,Chrome):

<input id="chkjq_1" type="checkbox" checked="checked"/> FF, Chrome, etc

我应该怎么做才能避免在 Internet Explorer 7 上出现这个问题; jquery 中有没有通用的方法来解决这个问题?

提前致谢。

【问题讨论】:

你用的是什么版本的jQuery? 见***.com/questions/901712/… 什么负责生成输入标签?这是一个 ASP.NET 服务器控件还是类似的东西?最好关注为什么标签渲染不正确,看看你是否可以解决这个问题;那么 jQuery 应该就可以工作了。 lidermin,你的意思是jquery UI 1.7.2,需要jquery 1.3+才能运行;无论如何,您的答案是使用任何 jquery 1.0+ 对不起,你是对的,我的意思是 jquery 1.3.2。 【参考方案1】:

试试这个:

if ($('#chkjq_1').is(':checked'))

  // more code

【讨论】:

它也适用于我。如果我的 'CHECKED' 在 IE9 中不起作用,我将其更改为 'checked' 并且可以工作。【参考方案2】:

我唯一能坚持工作的就是这样测试:

if ($('#chkjq_1').is('[CHECKED]'))

当你打开开发者工具时,像 IE 一样在选择器上使用全部大写来呈现它。据我所知,可以跨浏览器工作。 .is(':checked') 不适合我(使用 JQuery 1.7.1)。在多种模式下使用 IE 7 和 IE 8 进行了测试。其他浏览器(Firefox、Safari 测试)似乎并不在意。

【讨论】:

这会测试选中的属性是否存在。但是在 Firefox 中,如果我取消选中一个复选框,is('CHECKED') 仍然是 true。 那是因为你需要is(':CHECKED')【参考方案3】:

IE中复选框的“更改”事件被奇怪地触发了。

这可以解决为:- 1.) 将输入复选框的 onclick 事件绑定到要触发的所需目标函数 2.) 在目标函数中,通过勾选“checked”属性来检查复选框的状态-

if ($('#chkBox').attr("checked") == "checked")
      // do something ----or .attr("checked", "checked"); ---for another checkbox
else
      // do something else ----or .removeAttr("checked"); ---for another checkbox

【讨论】:

以上是关于jquery勾选复选框IE问题的主要内容,如果未能解决你的问题,请参考以下文章

当复选框分配有 jQuery 时,勾选不再起作用

jquery实现 点击复选框,勾选所有复选框,再次点击取消勾选,这个功能怎么实现?

firefox(火狐)下 js中设置checkbox属性checked="checked"已有,但复选框却不显示勾选的原因

检查是不是使用 jQuery 勾选了复选框:不同的方法? [复制]

jQuery selectable() 不响应复选框勾选

jQuery在提交时设置每个勾选复选框的每个前一个兄弟的值