2013-07-11 32 views
1

我正在使用JQuery Ajax來抓取數據。我想在我的代碼中包含所有錨定標記,如果有人點擊標記,它不會觸發並調用Ajax。以下是我的代碼,但它不起作用。讓錨標記點擊時不會觸發

$('.one_item a').each(function(){ 
    $(this).live('click', function(){ 
     alert($(this).attr('href')); 
     return false; 
    }); 
}); 

我正在使用JQuery版本1.5,所以.live應該工作。有任何想法嗎?乾杯。

+0

這些動態添加?如果是這樣,'.live'必須應用於選擇器,而不是特定的元素。 – Barmar

+0

你可以顯示「HTML」嗎? –

+1

「不起作用」是什麼意思?你的意思是警報的href是錯誤的嗎?或者說,錨跳不被阻止?或者什麼都沒有發生? – Amadan

回答

1

您可以選擇直接使用.live()

$('.one_item a').live('click', function(e) { 
    e.preventDefault(); 
    alert($(this).attr('href')); 
}); 

它應該工作,see this demo

但是,它不斷迭代alert($(this).attr('href'));。我怎樣才能讓它只點擊我點擊的物品?

確保您不會觸發click()事件循環其他地方,如:

$('.one_item a').each(function() { 
    $(this).click(); 
    // other stuff 
}); 
+0

'.on'直到jQuery 1.7才加入,他使用1.5。 – Barmar

+0

@Barmar是的,錯過了,修復。 – acdcjunior

+0

嗨,Thx。我設法讓它使用.click工作。但是,它會持續迭代警報$(this).attr('href')。我怎樣才能讓它只點擊我點擊的物品? – Alex

4

.live已被應用到選擇。當您使用.each()時,您無法處理動態添加的元素上的事件,因爲您只是遍歷循環運行時發現的元素。

$('.one_item a').live('click', function(){ 
    alert($(this).attr('href')); 
    return false; 
}); 
+0

嗨,thx爲您的答覆。它仍然保持迭代警報$(this).attr('href')。有20個結構相同的項目。 (

)我怎樣才能讓它只點擊我點擊的物品? – Alex

+0

對不起,巴爾瑪。有用。它迭代,因爲我在循環內調用函數。對我感到羞恥! – Alex