Почему родительские / ближайшие (селекторные) функции jQuery ведут себя по-разному в IE8? - PullRequest
1 голос
/ 10 мая 2011

У меня есть скрипт jQuery, который прекрасно работает в Chrome 11 и Firefox 4, но в IE8 он работает некорректно.Похоже, это связано с использованием функции jQuery parent () с селектором.Он не возвращает никаких элементов при запуске в IE8.

Я создал упрощенную версию своей проблемы, которая показывает те же симптомы в jsFiddle , чтобы предотвратить большой кусок кода здесь.

Кто-нибудь может сказать мне, что здесь может происходить?

ОБНОВЛЕНИЕ: Использование closest () , кажется, приводит к аналогичному поведению, нов этом случае кажется более подходящим.

Ответы [ 2 ]

2 голосов
/ 10 мая 2011

Должны ли элементы верхнего уровня быть разделами? Похоже, вы сталкиваетесь с одной из областей, где отсутствие поддержки HTML5 в IE8 ограничивает вас. Если вы измените разделы на div, код будет работать как есть.

Поддержка разделов в браузерах.

1 голос
/ 10 мая 2011

Глядя на селекторы в вашем jsFiddle, я смог заставить его нормально работать в IE8, если бы только избавился от второй части селектора.

$(document).ready( function(){
     $('a[data-detailed]').live('click', function(event){
        var a = $(this);
        var key= a.attr('data-detailed');

        $(".detailedOverview[data-detailed="+key+"]").slideToggle('fast');
        $(".masterOverview").slideToggle('fast');
        event.preventDefault();   
    });

    $('a[href=#back]').live('click', function(event){
        var a = $(this);
        var detailedOverview= a.parents("[data-detailed]");

        $(".masterOverview").slideToggle('fast');         
        detailedOverview.slideToggle('fast');

        event.preventDefault();   
    });
});

В каждом из ваших селекторов у вас был ", fileparent" после селектора. Нет необходимости указывать родителя таким образом, и избавление от него работает. На самом деле вы можете избавиться от файла-родителя все вместе.

...