2012-02-09 130 views
0

我有這段標記。這件作品已經通過ajax加載並附加在div中。文件user-bar.php未觸發jQuery事件

內容:

<div id="u-bar"> 
    <ul id="u-nav" class="nav"> 
     <li id="notifications-list" class="dropdown" data-time="" > 
      <a href="#" class="dropdown-toggle" data-toggle="dropdown"> 
      <i class="icon-comment"></i> 
      Notifications 
      <b class="caret"></b> 
      </a> 
      <ul class="dropdown-menu" > 
       <li><a href="#">Notification One</a></li> 
       <li><a href="#">Notification two</a></li> 
       <li class="divider"></li> 
       <li><a href="#">Show All Notifications</a></li> 
      </ul> 
     </li> 
     <li class="dropdown"> 
     <a href="#" class="dropdown-toggle" data-toggle="dropdown"> 
      <i class="icon-user"></i> 
      Profile 
      <b class="caret"></b> 
     </a> 
     <ul class="dropdown-menu"> 
      <li><a href="#">View Profile</a></li> 
      <li><a href="#">Settings</a></li> 
     </ul> 
    </li> 
    <li><a href="php/logout.php">Logout</a></li> 
    <div class="clear"></div> 
    </ul> 
</div> 

我已經scripts.js文件,如下這包括在index.php文件<script type="text/javascript" src="js/scripts.js"></script>

$(function(){ 
    loadUserBar(); 

    $('#notifications-list').live('click', function(){ 
     console.log('Test'); 
     $('#notifications-list .icon-comment').removeClass('new'); 
    }); 
}); 

function loadUserBar(){ 
    $('#user-area').load('php/user-bar.php', function(){ 
     initBootstrapElems(); //Initializing All popover elements 
    });  
} 

index.php文件具有了AJAX返回標記爲div#user-area插入。

整個頁面加載後,當我點擊列表項目#notifications-list時,沒有任何反應。但是當我直接在控制檯中輸入$('#notifications-list').click()時,日誌確實出現,並且removeClass確實發生。

這裏有什麼問題?

+0

你把這個jQuery代碼在ajax調用的回調? – 2012-02-09 16:00:28

+0

不。jquery代碼位於主頁面。我如何投入回調? – ptamzz 2012-02-09 16:09:24

+0

我把jQuery腳本放在ajax返回的標記中,同時還有'li'項目,但仍然是同樣的問題。 – ptamzz 2012-02-09 16:13:46

回答

1

你說得對,有一個與下拉引導衝突(模擬在http://jsbin.com/ijiqec/2/edit )。

出於某種原因(不要問我爲什麼)上改變使用現場固定的問題。 使用這段代碼:

$('#notifications-list').on('click',...

+0

非常感謝。有用。但是我必須將js腳本放在'user-bar.php'文件中。 – ptamzz 2012-02-09 18:18:00

1

嘗試放置處理程序以點擊標記事件。

$('#notifications-list a').live('click', function(){ ... }) 

更新: 您不能對所有li標籤使用相同的id。 您需要更改李#通知列表的一類,如果你有一個對每個標籤,然後更新JS:

$('.notifications-list a').live('click', function(){ ... }) 
+0

我試過了,仍然是同樣的問題。 – ptamzz 2012-02-09 15:59:03