Javascript 未捕获类型错误:无法调用方法';menuAim';空的
我使用了一个3级下拉菜单,它本身就可以正常工作,但是当添加到我的magento模板时,我会遇到冲突。我添加了$.noConflict(true);这修复了一些问题,但我仍然得到未捕获的Typeerror,加上第三级下拉菜单没有显示Javascript 未捕获类型错误:无法调用方法';menuAim';空的,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我使用了一个3级下拉菜单,它本身就可以正常工作,但是当添加到我的magento模板时,我会遇到冲突。我添加了$.noConflict(true);这修复了一些问题,但我仍然得到未捕获的Typeerror,加上第三级下拉菜单没有显示 <div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar-inner"> <div class="container">
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<div class="nav-collapse collapse">
<ul class="nav">
<li class="active">
<a id="dropdown-toggle" data-toggle="dropdown" href="#">Shop A-Z</a>
<!--
jQuery-menu-aim: this <ul> defines the dropdown main menu and its contents.
This is just one of many possible examples for defining the menu's HTML.
jQuery-menu-aim is agnostic to your HTML structure, it only fires events to
be used as you please.
-->
<ul class="dropdown-menu" role="menu">
<li data-submenu-id="submenu-patas">
<a href="#">Patas</a>
<!--
jQuery-menu-aim: each class="popover" div defines submenu content. There are a million
and one ways to do this, places to structure the HTML, etc. This is just one example.
jQuery-menu-aim is agnostic to your HTML structure, it only fires events to be used
as you please.
-->
<div id="submenu-patas" class="popover">
<h3 class="popover-title">Patas</h3>
<div class="popover-content"><img src="media/img/patas.png"></div>
</div>
</li>
<li data-submenu-id="submenu-snub-nosed">
<a href="#">Golden Snub-Nosed</a>
<div id="submenu-snub-nosed" class="popover">
<h3 class="popover-title">Golden Snub-Nosed</h3>
<div class="popover-content"><img src="media/img/snub-nosed.png"></div>
</div>
</li>
<li data-submenu-id="submenu-duoc-langur">
<a href="#">Duoc Langur</a>
<div id="submenu-duoc-langur" class="popover">
<h3 class="popover-title">Duoc Langur</h3>
<div class="popover-content"><img src="media/img/duoc-langur.png"></div>
</div>
</li>
<li data-submenu-id="submenu-pygmy">
<a href="#">Baby Pygmy Marmoset</a>
<div id="submenu-pygmy" class="popover">
<h3 class="popover-title">Baby Pygmy Marmoset</h3>
<div class="popover-content"><img src="media/img/pygmy.png"></div>
</div>
</li>
<li data-submenu-id="submenu-tamarin">
<a href="#">Black Lion Tamarin</a>
<div id="submenu-tamarin" class="popover">
<h3 class="popover-title">Black Lion Tamarin</h3>
<div class="popover-content"><img src="media/img/tamarin.png"></div>
</div>
</li>
<li data-submenu-id="submenu-monk">
<a href="#">Monk Saki</a>
<div id="submenu-monk" class="popover">
<h3 class="popover-title">Monk Saki</h3>
<div class="popover-content"><img src="media/img/monk.png"> </div>
</div>
</li>
<li data-submenu-id="submenu-gabon">
<a href="#">Gabon Talapoin</a>
<div id="submenu-gabon" class="popover">
<h3 class="popover-title">Gabon</h3>
<div class="popover-content"><img src="media/img/gabon.png"></div>
</div>
</li>
<li data-submenu-id="submenu-grivet">
<a href="#">Grivet</a>
<div id="submenu-grivet" class="popover">
<h3 class="popover-title">Grivet</h3>
<div class="popover-content"><img src="media/img/grivet.png"></div>
</div>
</li>
<li data-submenu-id="submenu-red-leaf">
<a href="#">Red Leaf</a>
<div id="submenu-red-leaf" class="popover">
<h3 class="popover-title">Red Leaf</h3>
<div class="popover-content"><img src="media/img/red-leaf.png"></div>
</div>
</li>
<li data-submenu-id="submenu-king-colobus">
<a href="#">King Colobus</a>
<div id="submenu-king-colobus" class="popover">
<h3 class="popover-title">King Colobus</h3>
<div class="popover-content"><img src="media/img/colobus.png"></div>
</div>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
-
javascript代码放在模板的底部,就在前面
<script src="js/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="js/jquery/jquery.menu-aim.js" type="text/javascript"></script>
<script src="js/bootstrap.min.js" type="text/javascript"></script>
<script>
$.noConflict(true);
var $menu = $(".dropdown-menu");
// jQuery-menu-aim: <meaningful part of the example>
// Hook up events to be fired on menu row activation.
$menu.menuAim({
activate: activateSubmenu,
deactivate: deactivateSubmenu
});
// jQuery-menu-aim: </meaningful part of the example>
// jQuery-menu-aim: the following JS is used to show and hide the submenu
// contents. Again, this can be done in any number of ways. jQuery-menu-aim
// doesn't care how you do this, it just fires the activate and deactivate
// events at the right times so you know when to show and hide your submenus.
function activateSubmenu(row) {
var $row = $(row),
submenuId = $row.data("submenuId"),
$submenu = $("#" + submenuId),
height = $menu.outerHeight(),
width = $menu.outerWidth();
// Show the submenu
$submenu.css({
display: "block",
top: -1,
left: width - 3, // main should overlay submenu
height: height - 4 // padding for main dropdown's arrow
});
// Keep the currently activated row's highlighted look
$row.find("a").addClass("maintainHover");
}
function deactivateSubmenu(row) {
var $row = $(row),
submenuId = $row.data("submenuId"),
$submenu = $("#" + submenuId);
// Hide the submenu and remove the row's highlighted look
$submenu.css("display", "none");
$row.find("a").removeClass("maintainHover");
}
// Bootstrap's dropdown menus immediately close on document click.
// Don't let this event close the menu if a submenu is being clicked.
// This event propagation control doesn't belong in the menu-aim plugin
// itself because the plugin is agnostic to bootstrap.
$(".dropdown-menu li").click(function(e) {
e.stopPropagation();
});
$(document).click(function() {
// Simply hide the submenu on any click. Again, this is just a hacked
// together menu/submenu structure to show the use of jQuery-menu-aim.
$(".popover").css("display", "none");
$("a.maintainHover").removeClass("maintainHover");
});
</script>
</div>
</div>
</body>
$.noConflict(真);
var$menu=$(“.dropdown menu”);
//jQuery菜单目标:
//在菜单行激活时激发的连接事件。
$menu.menuAim({
激活:激活子菜单,
停用:停用子菜单
});
//jQuery菜单目标:
//jQuery菜单目标:下面的JS用于显示和隐藏子菜单
//内容。同样,这可以通过多种方式实现。jQuery菜单目标
//不管你怎么做,它只是启动激活和停用
//事件,以便您知道何时显示和隐藏子菜单。
功能激活子菜单(行){
变量$row=$(行),
submenuId=$row.data(“submenuId”),
$子菜单=$(“#”+子菜单ID),
高度=$menu.outerHeight(),
宽度=$menu.outerWidth();
//显示子菜单
$submenu.css({
显示:“块”,
顶部:-1,
左:宽度-3,//主应覆盖子菜单
高度:高度-4//主下拉箭头的填充
});
//保持当前激活行的高亮显示外观
$row.find(“a”).addClass(“maintainHover”);
}
功能停用子菜单(行){
变量$row=$(行),
submenuId=$row.data(“submenuId”),
$子菜单=$(“#”+子菜单ID);
//隐藏子菜单并删除行的高亮显示外观
$submenu.css(“显示”、“无”);
$row.find(“a”).removeClass(“maintainHover”);
}
//引导的下拉菜单在单击文档时立即关闭。
//如果正在单击子菜单,请不要让此事件关闭菜单。
//此事件传播控件不属于菜单aim插件
//因为插件对引导不可知。
$(“.下拉菜单li”)。单击(函数(e){
e、 停止传播();
});
$(文档)。单击(函数(){
//只需在任何点击时隐藏子菜单。同样,这只是一个黑客攻击
//组合菜单/子菜单结构,以显示jQuery菜单目标的使用。
$(“.popover”).css(“显示”、“无”);
$(“a.maintainHover”).removeClass(“maintainHover”);
});
从$(“.dropdown menu”)获取null
表示它不是由jQuery呈现的,而是由其他库呈现的,看起来您没有正确使用.noConflict
请尝试以下方法:
$.noConflict(true);
var $menu = jQuery(".dropdown-menu");
//...
我做了这个
jQuery.noConflict();
(function( $ ) {
var $menu = $(".dropdown-menu");
//Rest of my code//
})( jQuery );
那时一切都很好 这肯定是一个冲突,因为它在自己的环境中运行良好,这是我使用的$.noConflict(true);对的