これは長い道のりだと感じてください。関数 var が必要だとは思いませんが、これを機能させるのに苦労しています。スクリプトの下部を onmouse leave に変更しましたが、常に間違った要素をターゲットにしています。
div がクリックされるのを探し、ul を表示し、mouseout で非表示にするスクリプトを作成します。
$(function() {
var toggleMenu = function(e) {
var self = $(this),
elemType = self[0].tagName.toLowerCase(),
//get caller
menu = null;
if (elemType === 'a') {
//anchor clicked, nav back to containing ul
menu = self.parents('ul').not('ul#logo_menu');
} else if (elemType === 'ul') {
//mouseleft ul, ergo menu is this.
menu = self;
}
if (menu) {
menu.hide('medium');
}
e.preventDefault();
return false;
};
$(document).ready(function() {
$('div.logo_menu').click(function(e) {
$('ul#logo_menu ul').show('medium');
console.log('div clicked');
e.preventDefault();
return false;
});
$('ul#logo_menu a').click(toggleMenu);
$('ul#logo_menu ul').mouseleave(toggleMenu);
});
});
私が目標とするとき。クリックされた方が書きやすい?
$(document).ready(function() {
$('a.drop').click(function(e) {
$(this).next("div").show('slow');
console.log('div clicked');
e.preventDefault();
return false;
});
$('li.mainmenudrop').mouseleave(function() {
$(this).children("div").hide('slow');
});
});