2011-11-21 219 views
1

正常工作,我有一個頁面上的JavaScript創建div元素的格式列表:的jQuery DIV點擊後隱藏不IE8

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

在點擊一個div,jQuery的點擊偵聽器處理點擊事件在request_main元素上,並搜索父div以獲得request_info div。然後它顯示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')); 

該語句返回每個點擊與工作的瀏覽器noneblock。在IE8中,第一次返回noneblock,然後undefined(當點擊同一個div時)。即使我在顯示和隱藏呼叫之後明確將功能中的div的值設置爲noneblock,也會發生這種情況。

+0

請把它http://jsfiddle.net/ – Yacov

回答

1

嘗試用下面的代碼:

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

十分感謝,這似乎已經整理它,並與其他事物的負載幫助!克里斯 – skilton