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