好的,所以我有一個JavaScript下拉菜單。下拉菜單工作正常,但當我點擊下拉鍊接中的一個鏈接不起作用。我認爲這與我設置的「返回錯誤/真實」有關。返回假 - 鏈接不工作 - 下降
的Javascript:
function ddMenu_open(event)
{
ddMenu_close();
var submenu = $(this).find('ul');
if(submenu){
ddmenuitem = submenu.css('visibility', 'visible');
return false;
}
return true;
}
function ddMenu_close()
{ if(ddmenuitem) ddmenuitem.css('visibility', 'hidden'); }
function ddMenu_timer()
{ closetimer = window.setTimeout(ddMenu_close, timeout); }
function ddMenu_canceltimer()
{ if(closetimer)
{ window.clearTimeout(closetimer);
closetimer = null;}}
$(document).ready(function()
{ $('#ddMenu > li').bind('click', ddMenu_open);
$('#ddMenu li ul').bind('click', ddMenu_timer);
});
document.onclick = ddMenu_timer;
}
</script>
所以,當我刪除了「返回False」語句我聯繫工作,但後來我的下拉菜單不繼續開放。當我刪除返回虛假陳述時,下拉菜單將快速打開然後關閉(幾乎不給用戶時間來點擊一個項目)。我需要在這段代碼中進行更改,以便當我點擊下拉菜單時它保持打開狀態,然後當其中一個下拉項目/鏈接點擊時,鏈接實際上可以正常工作。
同樣,現在下拉功能正常工作(當它是單擊它保持打開,直到有另一個點擊),但是當我點擊下拉項目鏈接不起作用,新頁面不會加載。感謝您的幫助。
感謝您的回覆,但它仍然不適合我。這裏是我的全部代碼:
<script type="text/javascript">
function ddMenu() {
var timeout = 500;
var closetimer = 0;
var ddmenuitem = 0;
function ddMenu_open(e)
{
ddMenu_close();
var submenu = $(this).find('ul');
if(submenu){
ddmenuitem = submenu.css('visibility', 'visible');
}
}
function ddMenu_close()
{ if(ddmenuitem) ddmenuitem.css('visibility', 'hidden'); }
function ddMenu_timer()
{ closetimer = window.setTimeout(ddMenu_close, timeout); }
function ddMenu_canceltimer()
{ if(closetimer)
{ window.clearTimeout(closetimer);
closetimer = null;}}
$(document).ready(function()
{ $('#ddMenu > li').bind('click', ddMenu_open);
$('#ddMenu li ul').bind('click', ddMenu_timer);
});
document.onclick = function(ev){
if(ev.target.nodeName !== 'ul') {
ddMenu_close();
}
};
}
</script>
我想再次下拉menues關閉文檔時,除了點擊菜單本身被點擊時。謝謝。
設置你的代碼的jsfiddle會有幫助。 – Jasper 2011-12-28 21:33:37
看起來像'document.onclick = ddMenu_timer;'每次點擊時啓動計時器。 – Mathletics 2011-12-28 21:35:26
'var submenu = $(this).find('ul'); if(submenu){}'這應該是'if(submenu.length){}'。 jQuery總是返回一個對象(即使它沒有元素)。 'if([])'和'if($())'都是真的。 – 2011-12-28 21:39:39