jQuery mouseover 不适用于 li 元素

发布于 2024-11-25 16:38:24 字数 490 浏览 0 评论 0原文

我正在尝试制作一个基于 ul 元素的菜单,该元素将在链接下方显示链接描述。

到目前为止,我有以下代码(稍微简化了)

      echo '
<script>
        $("#menu_1").mouseover(function() {
            $("#description").replaceWith("test");
        });
</script>

<ul class="menu_top">
<li id="menu_1"><a href = "#">Test</a></li>
</ul>

<div id="description" class="menu_desc">&nbsp;
</div>

';

但是,每次我将鼠标移到 li 元素上时,都没有任何反应。

有谁知道我做错了什么?

I'm trying to make a menu based on an ul element that will show the link description underneath the link.

So far, I have the following code (simplified a little)

      echo '
<script>
        $("#menu_1").mouseover(function() {
            $("#description").replaceWith("test");
        });
</script>

<ul class="menu_top">
<li id="menu_1"><a href = "#">Test</a></li>
</ul>

<div id="description" class="menu_desc"> 
</div>

';

However, everytime I move the mouse over the li element, nothing happens.

Does anyone know what I'm doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

笑红尘 2024-12-02 16:38:24

您需要确保您的事件分配发生在文档加载完成后,否则您的鼠标悬停事件也没有任何附加内容:

$(document).ready(function(){

$("#menu_1").mouseover(function() {
            $("#description").replaceWith("test");
        });

});

这是一个工作演示: http://jsfiddle.net/2mWb3/

You need to make sure that your event assignment happens after the document has finished loading, otherwise your mouseover event has nothing to attach too:

$(document).ready(function(){

$("#menu_1").mouseover(function() {
            $("#description").replaceWith("test");
        });

});

Here's a working demo: http://jsfiddle.net/2mWb3/

尾戒 2024-12-02 16:38:24

当您运行此代码时,#menu1 尚未在 DOM 中。

将其更改为

<script>
     $(function(){
        $("#menu_1").mouseover(function() {
            $("#description").replaceWith("test");
        });
      });
</script>

,以便您的代码在 document.ready 事件上运行。

#menu1 is not yet in the DOM when you run this code..

change it to

<script>
     $(function(){
        $("#menu_1").mouseover(function() {
            $("#description").replaceWith("test");
        });
      });
</script>

so that your code runs on document.ready event.

零度° 2024-12-02 16:38:24

Javascript 代码在遇到时执行。这可能发生在文档实际准备好之前。在您的情况下,您尝试在 #menu_1 元素实际存在于文档中之前选择它。因为您几乎肯定希望所有 jQuery 代码在文档准备好后运行,所以 jQuery 为您提供了一个快捷方法:

$(function () {
    // this code is run only after the whole document is ready to go
    $("#menu_1")...
});

Javascript code is executed as it is encountered. This might happen before the document is actually ready. In your case, you're trying to select the #menu_1 element before it actually exists in the document. Because you almost certainly want all your jQuery code to run after the document is ready, jQuery provides a shortcut method for you:

$(function () {
    // this code is run only after the whole document is ready to go
    $("#menu_1")...
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文