我有一个由链接调用的函数,它应该检查特定div中存在的各种复选框(传递给函数。)适用于除IE之外的所有浏览器(7.)据我所知.attr('选中','checked'是使用jquery 1.5.1
执行此操作的正确方法function selectall(industry){
$("#"+industry+"Apps :checkbox").attr('checked', 'checked');
$("#"+industry+"Apps :checkbox").change(); /* used for jqtransform plugin */
}
是否有我缺少的东西或更好的方法可以在所有浏览器中使用?我真的不在乎取消选择,只是选择。
HTML看起来像
<div id = 'HealthcareApps'>
<div style="clear: both;">
<a href = "javascript:selectall('Healthcare');">Select all</a>
</div>
<ul>
<li><label for="id_Healthcare_0"><input type="checkbox" name="Healthcare" value="1" id="id_Healthcare_0" /> Simple Messaging</label></li>
<li><label for="id_Healthcare_1"><input type="checkbox" name="Healthcare" value="2" id="id_Healthcare_1" /> Mobile Alerts and Alarms</label></li>
<li><label for="id_Healthcare_2"><input type="checkbox" name="Healthcare" value="3" id="id_Healthcare_2" /> Patient Identification / Drug Conflicts</label></li>
</ul>
(是的,我知道内联样式是一个可怕的想法。如果我能在IE中使用此链接,我也会解决这个问题。)
答案 0 :(得分:1)
你可以尝试这样的事情:js fiddle demo
<div id = 'HealthcareApps'>
<div style="clear: both;">
<a href="#" id="selectall" class="Healthcare" >Select all</a>
</div>
<ul>
<li><label for="id_Healthcare_0"><input type="checkbox" name="Healthcare" value="1" id="id_Healthcare_0" /> Simple Messaging</label></li>
<li><label for="id_Healthcare_1"><input type="checkbox" name="Healthcare" value="2" id="id_Healthcare_1" /> Mobile Alerts and Alarms</label></li>
<li><label for="id_Healthcare_2"><input type="checkbox" name="Healthcare" value="3" id="id_Healthcare_2" /> Patient Identification / Drug Conflicts</label></li>
</ul>
</div>
jquery:
$('#selectall').click(function(e) {
e.preventDefault();
var industry = $(this).attr("class");
$("#" + industry + "Apps :checkbox").attr('checked', 'checked');
});
并且,要打开和关闭:
$('#selectall').click(function(e) {
e.preventDefault();
var industry = $(this).attr("class");
var checkbox = $("#" + industry + "Apps :checkbox");
checkbox.attr('checked', !checkbox.attr('checked'));
});
答案 1 :(得分:0)
试试这个
function selectall(industry){
$("#"+industry+"Apps :checkbox").attr('checked', true);
$("#"+industry+"Apps :checkbox").change(); /* used for jqtransform plugin */
}
如果您使用jQuery 1.6+,则可以使用prop
$("#"+industry+"Apps :checkbox").prop('checked', true);
答案 2 :(得分:0)
尝试使用click()而不是change()。这似乎是一个IE7错误:
答案 3 :(得分:0)
试
$("#"+industry+"Apps input:checkbox").attr('checked', 'checked');
我没有时间来验证这一点(在工作中:))但我有一个潜行的怀疑,这将有助于ie7弄明白
答案 4 :(得分:0)
在您的标记中,'HealthcareApps'div没有结束标记。也许这是一个复制/粘贴遗漏,但如果不是,那么无效的标记可能是原因,特别是因为它是抱怨的IE7。