私はjavascriptドロップダウンメニューを持っています。ドロップダウンメニューは正常に機能しますが、ドロップダウンリンクの1つをクリックするとリンクが機能しません。私はそれが私の "偽りの真実を返す"ことと関係があると思う。Return False - リンクが動作しない - ドロップダウン
Javascriptを:私は「falseを返す」ステートメントを削除する場合
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文を削除すると、ドロップダウンメニューが実際にすぐに開き、終了します(ユーザーにはアイテムをクリックする時間がほとんどありません)。私はこのコードで変更する必要があるので、ドロップダウンをクリックすると開いたままになり、ドロップダウンアイテム/リンクの1つがクリックされるとリンクが実際に動作します。
もう一度、今すぐドロップダウン機能がうまくいきます(クリックすると別のクリックがあるまで開いていますが)。ドロップダウンアイテムをクリックすると、リンクが機能せず、新しいページが読み込まれません。ご協力ありがとうございました。
回答をいただきありがとうございますが、依然として私にとっては効果がありません。ここに私の全体のコードは次のとおりです。
再び<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ドロップダウンを閉じたいです。ありがとう。あなたはddMenu_openに引数を宣言する必要はありません、あなたは「ドン:
function ddMenu_open(event)
{
ddMenu_close(e);
var submenu = $(this).find('ul');
if(submenu){
ddmenuitem = submenu.css('visibility', 'visible');
return false;
e.preventDefault();
}
return true;
}
注:代わりに、あなたはこのようなプルダウンメニューのデフォルトの動作を阻止しようとすることができますfalseを返すの
あなたのコードのjsfiddleを設定すると便利です。 – Jasper
あなたがクリックするたびに 'document.onclick = ddMenu_timer;'のように見えます。 – Mathletics
'varサブメニュー= $(これ).find( 'ul');もしif(submenu.length){} 'でなければなりません。 jQueryは(要素がない場合でも)常にオブジェクトを返します。 'if([])'と 'if($())'が両方とも真です。 –