2012-08-05 35 views
0

我目前遇到了PHP和jQuery的問題。包含的PHP頁面中的jQuery代碼

我建立一個網站是這樣的:

的header.php - 這是所有的CSS和JS文件被加載。 index.php - 主頁面。 sidemenu.php - 這是側面菜​​單,這是在index.php中包含

裏面sidemenu.php我有這樣的JS代碼:

<script type="text/javascript"> 
    jQuery(document).ready(function($) { 
     $(".more").live('click', function(){ 
     $(this).next(".submenu").slideToggle(500); }); 
    }); 
    </script> 

這理應得到更多的到的slideToggle:

<div class="twocol" id="side-menu"> 

    <ul class="menu"> 
     <li>Dashboard</li>  
     <li class="more"><a href="#">Security Settings</a> <img src="images/dropdown-menu.png" align="right"></li> 
      <ul class="submenu"> 
       <li>Blacklistings</li> 
       <li>New Membership Package</li> 
      </ul>       
     <li class="more"><a href="memberships.php">Memberships</a> <img src="images/dropdown-menu.png" align="right"></li> 
      <ul class="submenu"> 
       <li>New Membership</li> 
       <li>New Membership Package</li> 
      </ul>   
     <li>Forums</li> 
     <li>Help Desk</li> 
     <li class="help">Documentation</li>  
    </ul> 

</div><!-- END 2col --> 

然而,當我點擊。更多時沒有任何反應。

奇怪的是,如果我只是用上面三個頁面的源代碼製作一個頁面,它就可以工作。

我在做什麼錯?

在此先感謝。

+0

當您在「includes」版本中加載頁面時,是否檢查了瀏覽器中生成的源代碼?另外,爲什麼「功能($)」? – Cranio 2012-08-05 11:37:12

+1

然後,在從PHP生成頁面的方式中必須有錯誤,請檢查源代碼。 – darma 2012-08-05 11:37:28

+0

我沒有檢查源代碼。沒有錯誤。 – oliverbj 2012-08-05 11:37:49

回答

0

你使用的是什麼版本的jQuery?我在jQuery網站上發現了這個:

從jQuery 1.7開始,不推薦使用.live()方法。使用.on()連接到事件處理程序 。老版本jQuery的用戶應該優先使用 .delegate(),而不是.live()。

2

,就應該替換:

$(this).next(".submenu").slideToggle(500); 

通過

$(this).children(".submenu").slideToggle(500); 

(下稱在同一水平以下標記)

編輯:

我一點點盲目的,我沒有看到你打開.more類別的標籤,然後用子菜單打開<ul>標籤。但是,這給我帶來了另一個問題:您將<li>元素與<ul>元素放在同一個標​​記中。