Javascript jquery插件中出现错误
我用jquery为菜单编写了这个插件 此插件在Chrome中成功运行,但在IE或其他浏览器中无法正常运行。。。 此错误包含以下内容: 当我在菜单中单击时,菜单打开,但当鼠标悬停时,子菜单子菜单不打开 此错误适用于除Chrome以外的所有浏览器。。。 在chrome中,当鼠标悬停时,此菜单正确工作子菜单打开Javascript jquery插件中出现错误,javascript,jquery,jquery-ui,jquery-plugins,Javascript,Jquery,Jquery Ui,Jquery Plugins,我用jquery为菜单编写了这个插件 此插件在Chrome中成功运行,但在IE或其他浏览器中无法正常运行。。。 此错误包含以下内容: 当我在菜单中单击时,菜单打开,但当鼠标悬停时,子菜单子菜单不打开 此错误适用于除Chrome以外的所有浏览器。。。 在chrome中,当鼠标悬停时,此菜单正确工作子菜单打开 $(function () { $.fn.extend({ hMenu: function (options) { var settings
$(function () {
$.fn.extend({
hMenu: function (options) {
var settings = {
menuItem: '',
subMenuSelector: 'div.sub-menu',
subSubMenuSelector: 'div.sub-menu ul li',
opp: 'a.outdoor',
closeDuration: 150,
openDuration: 350
};
var style = {
"display": "block",
clear: "both"
}
if (options != null) {
$.extend(settings, options);
}
var _base = $(this);
var _id = "";
init();
function init() {
if (settings.menuItem == '' || settings.subMenuItem == '') { return; }
$(settings.menuItem, _base).each(function () {
if ($(settings.subMenuSelector, $(this).parent()).length > 0) {
$(this).click(function () {
$(settings.subMenuSelector + ':visible', _base).fadeOut(settings.closeDuration);
if ($(settings.subMenuSelector, $(this).parent()).is(':visible')) {
$(settings.subMenuSelector, $(this).parent()).slideUp(settings.closeDuration);
$('html').unbind('click');
}
else {
//Show My Sub menu
$(settings.subMenuSelector, $(this).parent()).fadeIn(settings.openDuration);
$(settings.subMenuSelector, $(this).parent()).click(function () {
cancelEvent();
});
// And Do not anything else !!!!!! (cancel event !)
cancelEvent();
// $(settings.subSubMenuSelector).click(function () {
// $(settings.subMenuSelector).animate({ width: "700px", height: "700px" });
//
// })
if (settings.subSubMenuSelector == "") { return; }
// $(settings.subSubMenuSelector).mouseover(function () {
// $(this).css("color","red");
// });
$(settings.subSubMenuSelector).hover(function () {
var id = $(this).attr("id");
_id = id;
$("a." + id + "").show(function () {
$('a.' + id + '').css('display', 'block');
}); //show callback
//alert(id);
}, function () {
$('a.' + _id + '').hide('slow');
}); //subsubmenuselector.hover
//If user clicke on html , close current sub-menu
$('html').bind('click', function () {
$(settings.subMenuSelector, $(this).parent()).fadeOut(settings.closeDuration);
});
}
});
}
});
}
function cancelEvent() {
if (event && event.stopPropagation) {
event.stopPropagation();
}
else if (e && e.preventDefault) {
e.preventDefault(); // DOM style
}
else { // IE hack
window.event.cancelBubble = true;
}
}
} //function
}); //plugin definition
});
你能把代码放在jsfiddle中吗?为什么jQuery内置了cancelEvent函数呢?此外,e是未定义的,因此您应该在那里得到一个错误!为什么要这样做$('a.+id+'').css('display','block');当jquery show()已经为您完成这项工作时。