jQuery addClass () не работает в IE (8, 9 и, вероятно, другой тоже) - PullRequest
1 голос
/ 18 августа 2011

Простой html:

<div class="stuff-choice">
  <div class="item a">
    <label class="signup-checkbox">
      <input type="checkbox" value="a" name="stuff[a][]" id="stuff_choice_" class="things">
      <strong>A</strong>
    </label>
  </div>
</div>

Обычно я определяю, когда кто-то нажимает на флажок с классом css .things, а затем я обновляю родительский <div> с классом css .selected.

JS: (с $(document).ready(function(){ ...

$('.things').click(function() {     
    item = $(this).closest("div");
    if ($(this).attr('checked') != null)
        $(item).addClass('selected');
    else
        $(item).removeClass('selected');
});

Это работает как шарм при: - Safari (mac & win) - Firefox (mac & win)

Но не в IE!?!?

Понятия не имею, почему ...

Спасибо,

Алекс

Ответы [ 4 ]

4 голосов
/ 18 августа 2011

IE печально известен тем, что бесится, если вы не объявляете свои переменные, добавляя к ним префикс «var».

Так попробуйте это:

var item = $(this).closest("div");
2 голосов
/ 18 августа 2011

Попробуйте, closest уже дает объект jQuery, который вам не нужно оборачивать в $(), а также метод is() может использоваться для проверки, проверяется или нет.

$('.things').click(function() {     
    $item = $(this).closest("div");
    if ($(this).is(':checked'))
        $item.addClass('selected');
    else
        $item.removeClass('selected');
});
0 голосов
/ 25 апреля 2016

Я использовал .prop («отключен», «отключен») вместо addClass («скрыть») - у меня это сработало.

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

Я думаю, что ваша проблема - это объект, который вы вызываете .addClass.

item = $(this).closest("div");

В этой строке item устанавливается для объекта jQuery.

Следовательно, в следующем утверждении вам не нужен синтаксис $(item), просто используйте item.

$('.things').click(function() {     
    item = $(this).closest("div");
    if ($(this).attr('checked') != null)
        item.addClass('selected');
    else
        item.removeClass('selected');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...