第一次悬停时不会触发jquery hover()

第一次悬停时不会触发jquery hover(),jquery,Jquery,菜单通过ajax加载,悬停函数使用live()与每个li关联。但它仍然不是第一次触发。从第二次开始,它将正确触发 主文件 <html> <head> <title> test </title> <script type='text/javascript' src='js/jquery-1.4.2.js'> </script>

菜单通过ajax加载,悬停函数使用live()与每个li关联。但它仍然不是第一次触发。从第二次开始,它将正确触发

主文件

<html>
     <head>
        <title>
            test
        </title>
        <script type='text/javascript' src='js/jquery-1.4.2.js'>
        </script>
        <script>
            $(window).load(function() {
                jQuery(document).ready(function() {
                    jQuery('.loadm').live('click', function(event) {
                        $.ajax({
                            type: "POST",
                            url: "loadmenu.php",
                            success: function(data) {
                                $('#menu').html(data);
                            },
                            error: function() {

                            }
                        });
                    });
                    jQuery('.addchar').live('hover', function(event) {
                        $('.addchar:visible').each(function(index) {
                            $(this).hover(function() {
                                $("#result").html("Index is: " + index);
                            });
                        });
                    });
                });
            });
        </script>
    </head>

    <body>
        <div id="content">
            <form method="post">
                <a href="#" class="loadm">Load Menu</a>
            </form>
            <div id="menu" style="width:100">
                none
            </div>
            <div id="result">
            </div>
        </div>
    </body>

</html>
<?php
echo "<ul><li class='addchar'>one </li>
          <li class='addchar'>two </li>
          <li class='addchar' style='display:none'> three</li>
          <li class='addchar'>four </li>
          <li class='addchar' style='display:none'> five</li>
          <li class='addchar'>six </li>
          <li class='addchar' style='display:none'> seven</li>
          <li class='addchar'> eight</li>
          <li class='addchar' style='display:none'> nine</li>
                </ul>";

测试
$(窗口)。加载(函数(){
jQuery(文档).ready(函数(){
jQuery('.loadm').live('click',函数(事件){
$.ajax({
类型:“POST”,
url:“loadmenu.php”,
成功:功能(数据){
$('#menu').html(数据);
},
错误:函数(){
}
});
});
jQuery('.addchar').live('hover',函数(事件){
$('.addchar:visible')。每个(函数(索引){
$(this).hover(函数(){
$(“#结果”).html(“索引为:”+Index);
});
});
});
});
});
没有一个
菜单文件

<html>
     <head>
        <title>
            test
        </title>
        <script type='text/javascript' src='js/jquery-1.4.2.js'>
        </script>
        <script>
            $(window).load(function() {
                jQuery(document).ready(function() {
                    jQuery('.loadm').live('click', function(event) {
                        $.ajax({
                            type: "POST",
                            url: "loadmenu.php",
                            success: function(data) {
                                $('#menu').html(data);
                            },
                            error: function() {

                            }
                        });
                    });
                    jQuery('.addchar').live('hover', function(event) {
                        $('.addchar:visible').each(function(index) {
                            $(this).hover(function() {
                                $("#result").html("Index is: " + index);
                            });
                        });
                    });
                });
            });
        </script>
    </head>

    <body>
        <div id="content">
            <form method="post">
                <a href="#" class="loadm">Load Menu</a>
            </form>
            <div id="menu" style="width:100">
                none
            </div>
            <div id="result">
            </div>
        </div>
    </body>

</html>
<?php
echo "<ul><li class='addchar'>one </li>
          <li class='addchar'>two </li>
          <li class='addchar' style='display:none'> three</li>
          <li class='addchar'>four </li>
          <li class='addchar' style='display:none'> five</li>
          <li class='addchar'>six </li>
          <li class='addchar' style='display:none'> seven</li>
          <li class='addchar'> eight</li>
          <li class='addchar' style='display:none'> nine</li>
                </ul>";

摆脱live,并在成功时附加操作

jQuery(document).ready(function() {
    jQuery('.loadm').live('click', function(event) {
        $.ajax({
            // remove the line below and restore your url
            data: "html=" + $('#menufromajax').html() + '&delay=1',
            type: "POST",
            url: "/echo/html/",
            success: function(data) {
                $('#menu').html(data);


                $('.addchar:visible').each(function(index) {
                    $(this).hover(function() {
                        $("#result").html("Index is: " + index);
                    });

                });


            },
            error: function() {

            }
        });
    });
});

即使延迟也能工作

但是说真的,没有必要同时使用$(window).load和jQuery(document).ready,如果您在noconflict模式下运行,您可以只执行$(function()或jQuery(document).ready

并且不要使用“