2013-04-17 43 views
0

我已經調用PHP腳本從我的MySQL數據庫中的一些數據jQuery函數,jQuery的函數被調用如下:jQuery函數不叫

$(document).ready(function(){ 
    getTopFiveDeals(); 

在運行此它獲得的數據精細,並建立一些HTML並將其插入到網頁中。如下圖所示:

$('ul.special-list').append("<li><a href='#' class=restaurantItem restaurant= '" + item.estName + "' adddress='" + item.estAddr + "'><img src= " + item.img_link + 
     " width='60' height='60' alt='" + item.estName + "'><div class='img-det'><strong class='title'> " + item.title + " </strong><p> " + item.desc_short + 
     " <br>Expires: " + item.expiry_date + " </p><em class='price'>" + item.price + "</em></div></a><a href='dealDetail.html?id=" + item.id + 
     "' class='det-link'>Detail</a>"); 

問題出現在我有一個簡單的jquery函數下面。該函數不被調用,而是頁面重新加載到index.html#

$("a.restaurantItem").click(function (event) { 
    alert('Hello'); 
} 

任何幫助和或建議將不勝感激。

非常感謝

+0

http://learn.jquery.com/events/event-delegation/ –

回答

6

$("a.restaurantItem")被稱爲默認動作一旦。它不尋找新的元素。您需要使用的.on()事件代表團語法來匹配動態創建的元素:

$('ul.special-list').on('click', 'a.restaurantItem', function(e) { 
    e.preventDefault(); // To stop the link from redirecting the browser 
}); 
+0

上添加even.preventDefault,您可以在'.append()'項目後鏈接它,並且它將完美工作。 – PlantTheIdea

+0

這很有效,非常感謝您的快速響應。 – user1907509

3

你所需要的非線性動力元素委派事件處理程序,並防止錨(避免滾動到頂部或在href以下)

$('ul.special-list').on('click', 'a.restaurantItem', function(event) { 
    event.preventDefault(); 
    alert('Hello'); 
}); 
+0

這已經奏效了,非常感謝您的快速響應,我忘記了在我的問題代碼 – user1907509

0

使用.on()這樣

$(document).on('click',"a.restaurantItem",function (event){ 
    event.preventDefault(); 
    alert('Hello'); 
});