Селектор / проверенный атрибут jquery не обновляется в IE7 - PullRequest
4 голосов
/ 22 августа 2011

У меня есть функция, которая вызывается по ссылке, которая должна проверять различные флажки, которые существуют внутри определенного div (передается в функцию.) Работает во всех браузерах, кроме IE (7.) Насколько я могу судить .attr ('проверил ',' проверил '- это правильный способ сделать это с помощью 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.)

Ответы [ 5 ]

1 голос
/ 22 августа 2011

Вы можете попробовать что-то вроде этого: 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'));
});

Демонстрация переключения скрипты js

0 голосов
/ 22 августа 2011

В вашей разметке div 'HealthcareApps' не имеет закрывающего тега. Возможно, это упущение при копировании / вставке, но если это не так, то причиной может быть неправильная разметка, тем более, что это IE7, который жалуется.

0 голосов
/ 22 августа 2011

Попробуйте использовать click () вместо change ().Похоже, это ошибка IE7:

Проблемы IE7 с моим jQuery [функции щелчка и изменения]

0 голосов
/ 22 августа 2011

попробовать $("#"+industry+"Apps input:checkbox").attr('checked', 'checked');

У меня нет времени, чтобы проверить это (на работе :)), но у меня есть подозрение, что это поможет ie7 выяснить это

0 голосов
/ 22 августа 2011

Попробуйте это

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...