2011-09-22 57 views
3

我有一组按钮(之前的&下一个),用户点击。为什么在更改按钮类后,点击功能不起作用?

<a id="prev_btn" class="prev_1" href="#">Previous</a> 
<a id="next_btn" class="next_1" href="#">Next</a> 

当用户点击下一步按钮(.next_1),它改变了按钮next_2的类名,并改变先前的按钮(.prev_1)至prev_2。一旦类名更改,为prev_2设置的点击功能就不起作用。

$('.next_1').click(function() { 
    $('#next_btn').removeClass('next_1').addClass('next_2'); 
    $('#prev_btn').removeClass('prev_1 inactive').addClass('prev_2'); 
}); 

$('.prev_2').click(function() { 
    alert('this works'); 
}); 

为什么在使用jquery更改类之后,click函数不起作用?

回答

3

这是因为绑定是在加载时定义的。如果您希望它们动态地工作,请通过LIVE绑定点击。

$('.prev_2').live('click', function() { 
     alert('hi!'); 
}); 
+0

这正是我一直在寻找!非常感谢你!唯一需要添加的是选择器的开始单引号。 – zeckdude

+0

很高兴帮助,关于错字的遗憾。 –

2

听起来好像你对这里的评价时间感到困惑; $('.prev_2')获取当前具有'prev_2'类的所有元素,并将给定的操作应用于它们;它不是一个声明,无论将哪些元素添加到此类或从中移除,都不会生效。

如果您想要一个基于类的处理程序,您可以在文档级别注册onclick处理程序,然后测试事件目标的类并相应地进行分派。但是,只需要使用特定的按钮注册点击功能,并且在该处理程序内,在执行操作之前测试该按钮的类别就更为简洁。

2

当执行$('.prev_2').click(...),“上一页”按钮不具备prev_2类,所以它不分配单击处理程序,只thingas这目前有CALSS当.click方法是称为将有处理器绑定。

你想看看.live jQuery函数才达到你在找什么