スタックオーバーフローで見つけたドロップダウンメニューのコードを処理しています:http://jsfiddle.net/jhoffm34/VbtuC/
クリックすると展開するjqueryドロップダウンメニューがあります。document.onmousedownを使用して、[カテゴリ]をもう一度クリックしたときにメニューを閉じようとしていますが、すぐにメニューを再度開いています。誰かがこれを修正する方法を知っていますか?
スタックオーバーフローで見つけたドロップダウンメニューのコードを処理しています:http://jsfiddle.net/jhoffm34/VbtuC/
クリックすると展開するjqueryドロップダウンメニューがあります。document.onmousedownを使用して、[カテゴリ]をもう一度クリックしたときにメニューを閉じようとしていますが、すぐにメニューを再度開いています。誰かがこれを修正する方法を知っていますか?
作業デモ
http://jsfiddle.net/RguMu/showhttp://jsfiddle.net/RguMu/http://jsfiddle.net/UK9Qt/-
カテゴリがクリックされた場合のみ表示と非
表示
したがって、2回目のクリックで、メニューは閉じられます。
使用するis(':visible')
もう1つの提案は、それほど多くのプロパティは必要ないということです。ただやっshow
てhide
、残り、あなたはあなたの要件をよりよく知っています。
jQueryコード
if(submenu.is(':visible')){
submenu.hide();
return false;
}
完全なコード
var timeout = 999999;
var closetimer = 0;
var ddmenuitem = 0;
function jsddm_open(event) {
jsddm_canceltimer();
jsddm_close();
var submenu = $(this).find('ul');
if(submenu.is(':visible')){
submenu.hide();
return false;
}
if (submenu) {
ddmenuitem = submenu.css('visibility', 'visible');
ddmenuitem = submenu.css('position', 'relative');
submenu.show();
return false;
}
return true;
}
function jsddm_close() {
if (ddmenuitem) ddmenuitem.css('visibility', 'hidden');
if (ddmenuitem) ddmenuitem.css('position', 'fixed');
}
function jsddm_timer() {
closetimer = window.setTimeout(jsddm_close, timeout);
}
function jsddm_canceltimer() {
if (closetimer) {
window.clearTimeout(closetimer);
closetimer = null;
}
}
$(document).ready(function() {
$('#jsddm li').bind('click', jsddm_open);
$('#jsddm > li').bind('mouseout', jsddm_timer);
$('#jsddm > li').bind('mouseover', jsddm_canceltimer);
$('#jsddm li').find('ul').hide();
});
document.onmousedown = jsddm_close;