jquery не работает с IE 8 - PullRequest
       6

jquery не работает с IE 8

0 голосов
/ 19 октября 2010

Я пытаюсь реализовать функцию переключения со строкой таблицы.Все идет хорошо, кроме IE8.Сценарий, который я использовал, приведен ниже.

<script src="jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">  
    $(document).ready(function(){
        $("#report tr:odd").addClass("odd");
        $("#report tr:not(.odd)").hide();
        $("#report tr:first-child").show();

        $("#report tr.odd").click(function(){
            $(this).next("tr").each(function (){ this.toggle()});
            $(this).find(".arrow").toggleClass("up");
        });
        //$("#report").jExpand();
    });
</script>        

кто-нибудь, пожалуйста, помогите мне ..

Джессика

Ответы [ 2 ]

1 голос
/ 19 октября 2010

Вам нужно обернуть ($()) ваш this (который является просто элементом DOM внутри цикла, а не объектом jQuery), чтобы иметь доступ к .toggle() вот так:

$(this).toggle()

Но здесь нет необходимости в цикле .each(), это:

$(this).next("tr").each(function (){ $(this).toggle()});

может быть просто таким:

$(this).next("tr").toggle();

И он будет работать на всех найденных элементов ... хотя здесь будет только один.


Проблема № 2 - этотот факт, что IE8 определенно считает, что следующая строка всегда visibile (это ошибка в используемой реализации jQuery 1.3.2 ).У вас есть 2 варианта здесь, быстрое решение состоит в том, чтобы переписать это так:

$("#report tr.odd").click(function(){
    var show = $(this).find(".arrow").toggleClass("up").hasClass("up");
    $(this).next("tr").toggle(show);
});

Вы можете видеть, что работает здесь .Или лучшее решение для меня, обновить до последней версии jQuery (1.4.3) , , вы можете протестировать свой текущий код здесь с этим , работающим также в IE8.

0 голосов
/ 19 октября 2010

В вашей строке:

$(this).next("tr").each(function (){ this.toggle()});

Попробуйте изменить его на:

$(this).next("tr").each(function (){ $(this).toggle()});

Раньше у меня была такая проблема на некоторых браузерах, которые не могли различить это и $ (это).

Итак, вы получите:

$(document).ready(function(){
  $("#report tr:odd").addClass("odd");
  $("#report tr:not(.odd)").hide();
  $("#report tr:first-child").show();

  $("#report tr.odd").click(function(){
    $(this).next("tr").each(function (){ $(this).toggle()});
    $(this).find(".arrow").toggleClass("up");
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...