【发布时间】:2013-06-13 22:18:25
【问题描述】:
我有 2 个按钮,单击一个将交换两个按钮的类。
类是 selected 和 unselected。
我的 CodePen:
http://codepen.io/leongaban/pen/iLBvs
例如:单击“登录”按钮将删除其未选择的类,并为其提供已选择的类,并为“注册”按钮提供未选择的类。
现在的问题是register_unselected 类不起作用。 unselected 类是在我的 jQuery 中具有 click 动作的类。
我应该能够继续单击灰色按钮并将其变为蓝色。但是,在单击第一个灰色按钮(登录)后,新的灰色按钮注册不起作用。
使用 Chrome 的检查器我可以清楚地看到我的 register_unselected 类已添加,但点击功能不起作用。
有什么想法吗?您将如何处理?
// Login Tab (default : first)
$(".login_unselected").click(function(){
console.log('clicked login');
// Show Login Tab as selected
$(this)
.removeClass('login_unselected')
.addClass('login_selected');
// Show Register Tab as unselected
$(this).parent().find('#tab_register')
.removeClass('register_selected')
.addClass('register_unselected');
});
// Register Tab
$(".register_unselected").click(function(){
console.log('clicked register');
// Show Login Tab as selected
$(this)
.removeClass('register_unselected')
.addClass('register_selected');
// Show Register Tab as unselected
$(this).parent().find('#tab_login')
.removeClass('login_selected')
.addClass('login_unselected');
});
【问题讨论】:
-
两个词:
event delegation,click 事件在绑定时不会寻找获得该类的元素,而只是在页面加载时与该类存在的元素。快速修复是$(document).on('click', 'class', function(){ //normal code});,同时将document替换为不变的静态元素。 -
感谢您的提示! :D
-
@Leon 查看我目前未投票的解决方案,使用的代码量不到您当前使用的代码量的一半。没必要。
标签: jquery css click addclass removeclass