2011-11-09 78 views
3

即时通讯选择带有类的元素有一些奇怪的问题。
在我的情况下,我有这个AJAX查询,返回一些具有相同类的链接。 当我点击一个事件应该发生的链接,但它没有。

然后我尝试使它警告时,类的元素已被点击,什么都没有发生,然后我尝试使页面上的直接链接与同一类,现在它给了我警报..

发生什么事 ?阿贾克斯查询检查用户是否在线,并做到这一点每1分钟,该元素具有类“朋友”,我试图通过这个代码来调用它:jQuery选择器不能正常工作

$('.friend').click(function(){ 
    alert('clicked'); 
}); 

没有与显示的那些happends ajax请求。但它会响应直接放到网站上的链接。

+1

这是每天都问了几次。让我去找一个傻瓜。 – zzzzBov

+0

你可以发布你的HTML元素与朋友类吗? – ThinkingStiff

+0

那个帖子怎么样? – Flaashing

回答

1

尝试使用live

$('.friend').live('live',function(){ 
    alert('clicked'); 
}); 

这将是处理程序追加到该存在将该选择存在项目和项目。

+0

以及它仍然无法正常工作:/ Flaashing

+0

@Flaashing它工作正常(你可以看到你选择的答案[这与我的相同],但后来回答:-P) – Neal

+0

补给它..我吸在这个时候,你是正确的答案:) 现在它的工作,我只是不得不改变索姆代码的东西;)感谢很多顺便说一句,你进入PHP? – Flaashing

1

使用实时功能。它更“可靠”。

$('.friend').live('click', function(){ 
    alert('clicked'); 
}); 
+0

我喜欢这个想法,但不太喜欢“可靠”。这只是一个不同的,面向AJAX的事件处理程序。 – Alex

0

问题是jQuery的click功能仅结合到这些都是在DOM被click运行时刻的元件。因此您的ajax呼叫所添加的链接稍后会发生,因此会错过。 jQuery的< 1.7使用live这种类型的场景

$('.friend').live('click', function(){ 
    alert('clicked'); 
}); 

的jQuery的1.7及以上版本使用新的统一on语法

$(document).on('click', '.friend', function(){ 
    alert('clicked'); 
}); 
+0

'on'不会执行事件委托,除非提供了selector参数。如果必须的话,尝试使用'$(document.body).on('click','.friend'...)',但在这一点上它与'live'基本相同,所以你可以使用'live '。 – zzzzBov

+0

@zzzzBov是的,你是对的。仍然适应新的语法 – JaredPar

+0

我也是。我已经阅读了[on on on](http://api.jquery.com/on/)上的文档约10次,每次提及时我都需要引用它们。 – zzzzBov