2011-07-06 74 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的修复。