2011-02-04 116 views
1

菜單通過ajax加載和懸停功能是關聯到每個李使用live()。但它仍然不是第一次觸發。從第二次起,它是正確觸發jQuery的懸停()沒有觸發時,第一次懸停

主文件

<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>"; 

?>

回答

0

你產生任何.loadm稱之爲遠在頁面上動態控制?

+0

@Tcwlm **。loadm **與錨標籤控制相關聯,並且是**靜態**在主頁面中,點擊事件與此控件相關聯,菜單通過ajax動態加載,問題在於加載菜單的懸停功能。 – kiranking 2011-02-04 20:26:03

2

擺脫現場和追加行動成功

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() { 

      } 
     }); 
    }); 
}); 

http://jsfiddle.net/ENEBB/3/

作品即使有延遲。但是,嚴重的是,不需要$(window).load和jQuery(document).ready,如果你在noconflict中運行,只需要執行$(function()或jQuery(document).ready模式。

,並且不使用「<腳本>」總是通過添加類型=「文本/ JavaScript的」定義類型