【问题标题】:fake/automate a "hover" in JavaScript/jquery?在 JavaScript/jquery 中伪造/自动化“悬停”?
【发布时间】:2011-05-02 16:53:10
【问题描述】:

我想把这个导航栏放在我的网站上,这里是演示页面:http://insicdesigns.com/demo/css3/exp1/index.html 它使用 JavaScript、jQuery 和 CSS

问题是,在我的网站上,我使用 PHP 和 index.php?page=home?index.php?page=contact 等。 而且我不知道如何将栏上的项目设置为“活动”[它默认为“主页”]。我查看了代码,发现第一个

  • [主页] 有 class="active"。我尝试简单地将类移动到第二个项目,[“About”],但这只是把所有的事情都搞砸了,将整个动画向右移动,这并不能正常工作。所以在 .click() 上,这就是它设置项目的方式:
    $(this).siblings('li').removeClass('active'); // removes active
    $(this).addClass('active'); 
    

    所以我将 id="target" 放在另一个项目上,并使用 Chrome 的 JS 控制台输入相同的代码,但我使用 "#target" 而不是“这个” 但没有什么立即改变。我必须悬停在栏上,动画才能开始,寻找活动项目,然后将动画移到那里。现在,如果我用它来替换我当前的导航栏 [这是here],并且如果有人转到 index.php?page=contact,我无法激活 About 链接,以便用户知道他们在 @987654325 @ 页!

    所以这是我的问题: 有没有办法通过一些代码告诉 jQuery 我刚刚悬停? [骗它] 类似:

    $("#target").fakeEvent("hover");
    

    以便它运行代码 [顺便说一句,它附加到 $(selector).hover() 内的 function(){} -- 看看示例中的 lavalamp.js 文件]?如果您能提供帮助,我将不胜感激!谢谢:)

  • 【问题讨论】:

      标签: javascript jquery


      【解决方案1】:

      嗯,hover 由两个事件组成,mouseentermouseleave

      您可以通过以下方式触发mouseenter 事件:

      $("#target").mouseenter();
      

      【讨论】:

      • 我几乎竖起大拇指,因为它确实回答了他的问题。但是,经过调查,我注意到该插件有问题,需要进行一些调整。我宁愿不让他的问题得到解决,只是让另一个问题出现。
      • 酷!这确实回答了我的问题。如果我不能让 Levi 的答案正确工作,我会 TU 你的帖子。顺便说一句,当我检查帖子时,这是什么意思?
      • 我在
      【解决方案2】:

      回答:http://jsfiddle.net/morrison/4CU4H/

      回答注意事项:

      • The fancy menu 使用糟糕的 JavaScript。我已经修改了脚本以修复一些错误并优化性能。 使用我的 JavaScript 而不是他们的。
      • 要让活动类在页面加载时处于正确位置,只需在调用 jQuery 之前将活动类应用到您想要的位置。您可能应该在您的 php 输出中设置活动类。这也允许在 JavaScript 无法加载时很好的样式降级。
      • 插件禁止单击,因为它是一个示例。您可能希望删除 click 函数中的 return 语句

      您网站上的注意事项:

      • 隐藏您的查询。这不是硬性规定,但在您的情况下您应该这样做。 http://www.macdonaldfamilysingers.com/?page=contactindex.php?page=contact 应该是 http://www.macdonaldfamilysingers.com/contact/。这里是a tutorial on url rewriting
      • 您可能想要美化您的桌子。通过移除一些边框和间距,它也会占用更少的视觉空间。

      【讨论】:

      • 感谢有关 url 重写的提示...但是,它们似乎不适用于我的本地 Apache2 服务器 [Ubuntu 11.04 x64],可能是我的配置;但是,如果我不能让它在localhost 上工作,那么它会让开发变得非常困难! :P [它确实在我的远程服务器上工作,但是。]另一个复杂之处是,我必须为每个需要 &variable=value 的页面使用重写引擎,比如页面“schedule”,它可以选择使用 &year =2012,或任何一年。 [你仍然可以重写 URL,但它似乎只会让事情变得更复杂] 现在将尝试你修改过的代码
      • 这并不难,真的。事实上,它更简单:/schedule/2012/ vs ?page=contact&year=2012 如果您担心规则的复杂性,它也很简单(未经测试):RewriteRule ^schedule/([0-9]*)/?$ /?page=schedule&year=$1 [L,NC]。基本上,您处理需要特定值的规则,然后对剩下的内容执行通用规则。
      • 哦.. 好吧,我会考虑这样做.. 但这不仅仅是那一页。我不记得我是否在我的联系人或任何页面中使用了更多 &vars=vals。我总是可以挖掘我的代码并查看.. 无论如何 ...我从您发布的 URL 中复制了 JS、CSS 和 HTMl,但它不起作用。但是,它会在 URL 的“结果”框中设置动画。很奇怪,当我把它放在我的服务器上时,我无法弄清楚为什么它不起作用。编辑:我已经上传到这里:macdonaldfamilysingers.com/matt/menu_test
      • 上传到某个地方,这样我就可以看到你做错了什么。该代码显然有效,因为 jsfiddle 可以。
      • macdonaldfamilysingers.com/matt/menu_test 顺便说一句,我的意思是 “我不知道为什么它在我的 本地 服务器上不起作用”,顺便说一句,我认为您不小心将菜单栏粘贴了两次。所以我将删除一个迭代
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-09
      相关资源
      最近更新 更多