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实现 点击复选框,勾选所有复选框,再次点击取消勾选,这个功能怎么实现?
firefox(火狐)下 js中设置checkbox属性checked="checked"已有,但复选框却不显示勾选的原因