期望的行为是:
我的jQuery代码在Safari & Firefox中工作得很好,但在IE8中则不行。在IE8中,下拉菜单在第一次单击父菜单时再次打开和关闭。第二次单击父菜单时,下拉菜单将保持打开状态。我使用的是jQuery 1.6.2。
下面是jQuery代码(我从我所读到的不同方法中拼凑出的一个Frankenstein ):
$(function() {
/* for keeping track of what's "open" */
var activeClass = 'menu-open', showingDropdown, showingMenu, showingParent;
/* hides the current menu */
var hideMenu = function() {
if(showingDropdown) {
showingDropdown.removeClass(activeClass);
showingMenu.fadeOut(500);
}
};
/* recurse through dropdown menus */
$('.drop').each(function() {
/* track elements: menu, parent */
var dropdown = $(this);
var menu = dropdown.next('.subnav'), parent = dropdown.parent();
/* function that shows THIS menu */
var showMenu = function() {
hideMenu();
showingDropdown = dropdown.addClass('menu-open');
showingMenu = menu.show();
showingParent = parent;
};
/* function to show menu when clicked */
dropdown.attr('href','/#dropdown').bind('click',function(e) {
if(e) e.stopPropagation();
if(e) e.preventDefault();
if ( dropdown.hasClass('menu-open') ) {
hideMenu();
} else {
showMenu();
}
});
/* function to show menu when someone tabs to the box */
dropdown.bind('focus',function() {
showMenu();
});
});
});
如果有人能给我一个指点,说明为什么IE会与Webkit & Firefox不同,那将是非常感谢的。与我所描述的现有解决方案的链接也是很棒的。请解释一下,就像你在和一个慢速的孩子说话一样,因为jQuery / Javascript不是我的强项。
发布于 2011-08-24 11:31:01
showMenu();在焦点(鼠标向下)上被调用,然后在“单击”(鼠标发布)hideMenu()上被调用,这就是为什么再次单击它的原因,因为它已经有了焦点。但如果你按下它,我敢打赌你会有同样的行为。我将删除“焦点”代码,或使“焦点”不干扰“单击”
https://stackoverflow.com/questions/7174438
复制