为什么在更改按钮类后,点击功能不起作用?
问题描述:
我有一组按钮(之前的&下一个),用户点击。为什么在更改按钮类后,点击功能不起作用?
<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函数不起作用?
答
这是因为绑定是在加载时定义的。如果您希望它们动态地工作,请通过LIVE绑定点击。
$('.prev_2').live('click', function() {
alert('hi!');
});
答
听起来好像你对这里的评价时间感到困惑; $('.prev_2')
获取当前具有'prev_2'类的所有元素,并将给定的操作应用于它们;它不是一个声明,无论将哪些元素添加到此类或从中移除,都不会生效。
如果您想要一个基于类的处理程序,您可以在文档级别注册onclick处理程序,然后测试事件目标的类并相应地进行分派。但是,只需要使用特定的按钮注册点击功能,并且在该处理程序内,在执行操作之前测试该按钮的类别就更为简洁。
答
当执行$('.prev_2').click(...)
,“上一页”按钮不具备prev_2类,所以它不分配单击处理程序,只thingas这目前有CALSS当.click
方法是称为将有处理器绑定。
你想看看.live
jQuery函数才达到你在找什么
这正是我一直在寻找!非常感谢你!唯一需要添加的是选择器的开始单引号。 – zeckdude
很高兴帮助,关于错字的遗憾。 –