У меня есть список 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.