2011-07-06 106 views
10

我很努力使一個具有特定類的錨定標記在div內單擊時出現警報。jQuery類選擇器不工作

在質疑我的HTML部分看起來像這樣...

<div id="foo"> 
    <a class='bar' href='#'>Next</a> 
</div> 

jQuery的部分如下..

$('.bar').click(function() 
{ 
    alert("CLICKED"); 
}); 

我的問題是,我不能拿出此警報,我認爲我正確地選擇了「下一個」類,但是由於某種原因它不會選擇它。我也試過這個page幾乎所有的東西,但沒有任何工作。如果我不試圖指定錨點標記,例如$('#foo')。click(function()...然後它可以工作,但是在這個div中會有多個錨點標記,所以只需要在點擊的div不會用於我需要的東西,這個網站是一個使用ajax發送信息到do_search.php的搜索引擎,在do_search.php中,我根據搜索到的結果做出分頁決定,如果適用的話,可以製作並回顯下一個,上一個,最後一個和第一個鏈接

編輯:我只是想通了它,它是我的.next函數的放置,因爲它沒有在初始文檔加載,而是在返回結果後,我將.next函數移動到ajax函數的成功部分,因爲如果需要這些按鈕,現在就可以創建按鈕。

回答

30

嘗試使用live()命令:

$(".bar").live("click", function(){ alert(); });

因爲你通過AJAX加載您的按鈕,點擊事件不綁定到它。如果使用live()命令,它會自動將事件綁定到頁面加載後創建的所有元素。

更多細節,here

+1

這樣做對我來說也是這樣做的。感謝這些信息,我不知道live()命令。 – dan

+0

很高興幫助:) – linkyndy

+0

謝謝。這需要更多的讚揚! – MasterV

7

你肯定錯過了$(document).ready()。您的代碼應該是:

$(document).ready(function(){ 
     $('.bar').click(function() 
     { 
     alert("CLICKED"); 
     }); 
    }); 

希望這會有所幫助。歡呼聲

+1

或者,在HTML聲明之後移動代碼$('.bar')。click()可能會起作用。然而問題的關鍵是你試圖給一個可能還沒有創建的DOMElement分配一個監聽器。埃德加上面的評論解決了這個問題。乾杯 –

+0

如果$(document).ready ...已經存在,然後確保jQuery包含了actualyl,並且路徑是正確的。 你的代碼本身工作正常,看到這裏 - http://jsbin.com/ayiquk/ –

+0

我有jquery庫包括和$(document).ready,我展示的是我的腳本文件的一部分,網站。這是它唯一不起作用的部分。我認爲我應該在原始文章中提供更多信息,這個下一個按鈕實際上是在以後創建的,該網站是一個搜索引擎,它使用ajax將信息發送到查詢mysql數據庫的do_search php腳本。這個下一個按鈕是在php腳本中創建的,並根據有多少頁面的信息進行回顯。還有一個前一個,最後一個和第一個按鈕。 – dan

1
  1. 確保您已正確包含JQuery Library
  2. 確保您的腳本$(document).ready() in short $(function(){ });
  3. 之間

書面演示: http://jsfiddle.net/W9PXG/1/

<div id="foo"> 
    <a class='bar' href='#'>Next</a> 
</div> 

$(function(){ 
$('a.bar').click(function() 
    { 
    alert("CLICKED"); 
}); 
}); 
4

.live現在已經過時,是該所選擇的答案。答案在上面所選答案的評論中。這裏是解決方案,爲我解決它:

$(document).on('click','.bar', function() { alert(); }); 

感謝@Blazemonger的修復。