2011-05-19 59 views
2

我有一個小問題,我正在實現一個交互設計技巧的jQuery。我有一個鏈接和一個隱藏的下拉菜單來顯示用戶何時點擊鏈接。如果用戶點擊鏈接或菜單,我想要隱藏下拉菜單。這兩個元素都在使用AJAX動態加載的頁面部分(因此使用live()函數)。一切工作正常,如果我在一個非AJAX重新加載的容器上,但它只是一個動態加載的內容(下拉菜單顯示,但不隱藏,如果我點擊外面)不工作。我的代碼如下:問題jquery live()函數和AJAX加載的內容

$("#clickToOpen").live('click',function(event) { 
    $("#dropdownMenu").show(); 
    event.stopPropagation(); 
}); 

$("#dropdownMenu").live('click',function(event){ 
    event.stopPropagation(); 
}); 

$(document).live('click',function() { 
    $("#dropdownMenu").hide(); 
}); 

(我也試圖與點擊()函數直接對(文件的最後一個事件),因爲該元素是不是重新加載,但不工作)

有什麼想法嗎?

回答

0

我覺得你可以創建一個類像

.hide { 
display:none; 
} 

和使用這樣的toggleClass ...

$("#clickToOpen").live('click',function(event) { 
$('#dropdownMenu').toggleClass("hide"); 
}) 

不是測試代碼...

這裏是最後的代碼爲...

<!DOCTYPE html> 
<html> 
<head> 
<style> 
.hide { 
display:none; 
} 

.show { 
display:visible; 
} 
</style> 
<script src="http://code.jquery.com/jquery-latest.js"></script> 
</head> 
<body> 

<a href='' id='clickToOpen'>click me</a> 

<div id='dropdownMenu' class='hide'>dropdownMenu</div> 

<script> 
$("#clickToOpen").live('click',function(event) { 
$('#dropdownMenu').toggleClass("hide"); 
event.preventDefault(); 
}) 
</script> 

</body> 
</html> 
0

有人應該糾正我,如果我錯了。

但對於我的.live調用event.stopPropagation()將沒有任何效果可言的,活的理解去解決它連接到窗口或文檔對象,因此,它已經儘可能地已經可以傳播。

至於菜單中隱藏,

我相信你應該考慮增加一個透明的疊加,同一類的事情模式對話框使用。

然後,您綁定到疊加層以隱藏菜單。