无法在 HoverIntent 中进入主要功能
Posted
技术标签:
【中文标题】无法在 HoverIntent 中进入主要功能【英文标题】:Can't Enter Main Function in HoverIntent 【发布时间】:2013-10-22 00:13:45 【问题描述】:我的项目由一个菜单栏组成,当鼠标悬停在每个按钮上时,我希望在下面显示子菜单(hoverIntent)。我正在使用 Wet-Boew (Web Experience Toolkit) (https://github.com/wet-boew/wet-boew) 来创建这些功能。
我的项目工作区由一个主项目 php 文件夹组成,包括一个调用 jquery.min.js 以及随后的 hoverintent.js 和 menubar.js 的索引文件。
下面是 hoverintent.js 的开头:
(function($)
// Alert Point A
$.fn.hoverIntent = function(f,g)
// Alert Point B
// default configuration options
var cfg =
sensitivity: 7,
interval: 100,
timeout: 0
;
// override configuration options with user supplied object
cfg = $.extend(cfg, g ? over: f, out: g : f );
etc...
)
我的问题是,虽然我可以到达代码中的第一个更改点 A(并且可以生成更改框),但程序不会运行 $.fn.hoverIntent = function(f,g)。 ..(我有第二个警报点 B)。我的 menubar.js 也有类似的问题(无法加载代码的主要功能)。
这个问题最常见的来源和解决它的最佳方法通常是什么?
应该注意的是,我之前确实在不同的 php 项目文件夹(仍在项目工作区中)中调用了一个 jQuery,这与该软件的单独登录程序有关。索引文件跳转到登录程序获取用户凭证,然后返回索引文档显示主要内容。
我确定这是我后来在索引文件中引用的同一个 jQuery 文件,在 hoverintent.js 和 menubar.js 之前。这是导致问题的原因吗?
抱歉,我现在没有所有代码可以分享,我会尽快把剩下的代码拿出来。提前致谢。
--更新------------------ -
我的主索引文件包含带有以下代码的头部。请注意,“../”是必需的,因为 wet-boew 项目文件夹与工作区中的主程序项目文件夹(索引)是分开的:
<head>
<script src="../wet-boew-master/build/js/jquery.min.js" type="text/javascript"></script>
<script async="async" src="../wet-boew-master/build/js/dependencies/outside-min.js"></script>
<script async="async" src="../wet-boew-master/src/js/dependencies/hoverintent.js"></script>
<script async="async" src="../wet-boew-master/build/js/dependencies/equalheights-min.js"></script>
<script async="async" src="../wet-boew-master/build/js/dependencies/resize-min.js"></script>
<script async="async" src="../wet-boew-master/build/js/i18n/en-min.js"></script>
<script src="../wet-boew-master/src/js/workers/menubar.js" type="text/javascript"></script>
<title>Title of the Project</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<link rel="icon" type="image/ico" href="images/icon.ico">
<script src="../wet-boew-master/build/js/settings.js"></script>
<link href="../wet-boew-master/build/grids/css/util-min.css" rel="stylesheet"/>
<link href="../wet-boew-master/build/js/css/pe-ap-min.css" rel="stylesheet"/>
<link href="../wet-boew-master/build/.../css/theme-min.css" rel="stylesheet"/>
<noscript><link rel="stylesheet" href="../wet-boew-master/build/.../css/theme-ns-min.css" /></noscript></head>
再往下,在索引主体内部,我们有菜单栏:
<body>
<div id="wb-body">
<div id="wb-head">
<div id="wb-head-in">
<header>
<div id="wu-bnr" role="banner">
<nav role="navigation">
<div id="wu-psnb" >
<div id="wu-psnb-in">
<div class="wet-boew-menubar mb-mega" data-load="menubar" role="application" style="min-height: 28px;">
<div>
<ul data-ajax-replace="../wet-boew-master/demos/includes/menu-eng.txt" class="mb-menu" role="menubar">
此时我的菜单栏选项及其各自的子菜单如下所示:
<li *class=""* role="presentation">
<section role="presentation">
<h3 role="presentation">
<a href="index.php?location=activitiesMenu:index" role="menuitem" class="knav-1-0-0 mb-has-sm" aria-haspopup="true">
<span class="expandicon">
<span class="sublink"><?=$glb_string["activities"]?></span>
</span>
<span class="wb-invisible">(open the submenu with the enter key and close with the escape key)</span>
</a>
</h3>
<div *class="mb-sm"* role="menu" *aria-expanded="false"* *aria-hidden="true"* **id="myHoverIntent"**>
<div class="span-2" role="presentation">
<ul role="presentation">
<li role="presentation"><a href="index.php?location=activitiesMenu:index" role="menuitem" class=" knav-1-0-1" tabindex="-1"><?=$glb_string["views"]?><?=($language_set_variable == 'fr'?:)?></a></li>
<li role="presentation"><a href="index.php?location=activitiesMenu:create" role="menuitem" class=" knav-1-0-2" tabindex="-1"><?=$glb_string["create"]?><?=($language_set_variable == 'fr'?':')?></a></li>
</ul>
</div>
</div>
</section></li>
这是否是上面代码中我的 id="MyHoverIntent"(粗体**)的正确位置?
还应该注意,上面的斜体代码 (*) 没有改变(我假设是因为 menubar 和 hoverIntent 主要功能没有运行)。当用户将鼠标悬停在每个菜单栏选项上或离开它时,这通常会自动更新。我知道这一点是因为 WET-BOEW 文件夹中包含的示例文件显示了一个功能齐全的页面(菜单栏和 hoverIntent 工作),并且在 Firebug 中观察到了这些更改。尽管出于某种原因,Firebug 显示该示例从未引用 menubar.js。
【问题讨论】:
【参考方案1】:由于我们现在只有一半的代码,但有些事情浮现在脑海中,因此很难说出您到底在做什么阻止您的代码工作。首先,hoverIntent
函数将在您实际在 jQuery 对象上调用它时被调用,就像这样
$('#myHoverIntent').hoverIntent();
其次,确保在hoverIntent
函数实际定义之前没有这样做,最后,确保将window.jQuery
传递给immediately-invoked function expression
这是一个工作示例:http://jsfiddle.net/G3vCS/
【讨论】:
Tom,我已经进行了更新,以便在上面的索引中显示更多我的代码。我尝试包括: $(function() $('#myHoverIntent').hovertIntent(); ) 在 hoverIntent.js 中,在其余代码下方(在 (window.jQuery); 下方)但是我是在我的 Firebug 中出现错误:“TypeError: $(...).hoverIntent 不是函数。”我对 id="myHoverIntent" 的引用也在正确的 div 位置吗?这是菜单栏上特定下拉菜单的子菜单的开始位置。 我已经弄清楚如何进入 hoverintent.js 文件,但是我现在面临两个问题:我不确定应该为 hoverIntent() 输入哪两个参数。一般是 $("myHoverIntent").hoverIntent( showNav , hideNav );但这些在我的代码中未声明。我会把它们设置成什么?此外,在 hoverintent.js 函数中,我无法输入我认为对代码至关重要的任何私有函数: var track = function(ev) alert("I am here3"); cX = ev.pageX; cY = ev.pageY; ; var compare = function(ev,ob) ... var delay = function(ev,ob) ... 等等...以上是关于无法在 HoverIntent 中进入主要功能的主要内容,如果未能解决你的问题,请参考以下文章
当应用程序在 iOS12 中进入后台时,URLSessionDelegate 的 didWriteData 不会调用
用python操作MySQL,在python界面中显示的数据时被修改过的,但是从MySQL中进入查看表,数据没有被改变