JQuery DIV нажмите кнопку скрыть не работает должным образом в IE8 - PullRequest
1 голос
/ 21 ноября 2011

У меня есть список div элементов, созданных с помощью javascript на странице, которые имеют формат:

<div id="UniqueID" class="request">
    <div class="request_main"></div> //VISIBLE
    <div class="request_info"></div> //HIDDEN
</div>

При щелчке div прослушиватель щелчков jQuery обрабатывает событие щелчка по элементу request_main и ищет в родительском div div request_info. Затем он показывает request_info div, если он еще не виден.

$(".request_main").live('click', function() {       
    $(".nrl").removeClass('blue').addClass('grey');                 
    if ($(this).parent().find(".request_info").css('display') == 'none') {
        $(".request_info").hide();  
        $(this).parent().find(".request_info").stop(false,true).show("slide", {direction:"up"}, 300, function(){});
        $(this).find(".nrl").removeClass('grey').addClass('blue');
        $(".links").removeClass('white').addClass('grey');
        $(".links").css('background-color','white');
        $(this).find(".links").removeClass('grey').addClass('white');
        $(this).find(".links").css('background-color','#1B75BB');
    }           
});

В Firefox, Safari, Chrome и даже IE9 это работает отлично. В IE8, однако, эта функция работает только с элементами div, которые не были нажаты до, например. Нажмите на UniqueID_1 -> request_info. Нажмите на UniqueID_2 -> request_info. Нажмите UniqueID_1 второй раз -> ничего не происходит.

alert($(this).parent().find(".request_info").css('display'));

Этот оператор возвращает none и block при каждом клике с работающими браузерами. В IE8 это возвращает none и block в первый раз, затем undefined после этого (при нажатии на тот же div). Это происходит, даже если я явно установил значения для div в функции на none и block после вызовов show и hide.

1 Ответ

1 голос
/ 21 ноября 2011

Попробуйте ввести следующий код:

$(".request_main").live('click', function(e) {
  e.stopPropagation();
});
...