【发布时间】:2013-06-22 03:20:08
【问题描述】:
小提琴:http://jsfiddle.net/4PMwP/
我正在为我的导航栏使用以下脚本:
(function($){
var timeout = 500;
var closetimer = 0;
var ddmenuitem = null;
// From https://github.com/Modernizr/Modernizr/blob/master/modernizr.js
var isTouch = ('ontouchstart' in window) ||
window.DocumentTouch && document instanceof DocumentTouch;
// jsddm funcs from http://javascript-array.com/scripts/jquery_simple_drop_down_menu/
function jsddm_open($this){
jsddm_canceltimer();
jsddm_close();
ddmenuitem = $this.find('ul').css('visibility', 'visible');
}
function jsddm_close() {
if(ddmenuitem){
ddmenuitem.css('visibility', 'hidden');
ddmenuitem = null;
}
}
function jsddm_timer() {
closetimer = window.setTimeout(jsddm_close, timeout);
}
function jsddm_canceltimer() {
if(closetimer)
{ window.clearTimeout(closetimer);
closetimer = null;
}
}
function jsddm_toggle($this) {
if (ddmenuitem && $this.has(ddmenuitem[0]).length){
jsddm_close();
}
else {
jsddm_open($this);
}
}
$.fn.make_dropdown = function(options){
return this.each(function(){
if (options && options['timeout']){
timeout = options['timeout'];
}
$(this).click(function(event){
jsddm_toggle($(this));
event.stopPropagation();
});
if (!isTouch){
$(this).mouseover(function(){ jsddm_open($(this)) }).mouseout(jsddm_timer);
}
});
}
$(document).click(jsddm_close);
})(jQuery);
悬停或单击时会显示下拉菜单,这对于桌面和移动浏览器非常有用。问题是我的下拉菜单将包括搜索、登录等输入框,单击这些不应关闭下拉菜单。由于下拉列表中的所有内容都是监听点击的 li 的子节点,因此无论如何都会关闭。
我需要在单击子元素时下拉菜单保持可见,但在单击主父 li 时仍会切换。
谢谢
【问题讨论】:
-
这些答案对您有帮助吗?
-
当然可以。在不问另一个问题的情况下,知道如何在输入框处于活动状态时启用它也不会关闭下拉菜单吗?所以它不会在用户打字时消失,等等
-
给你小提琴jsfiddle.net/pF8Rp。我也会更新我的答案..
标签: jquery events drop-down-menu navigation