我有一个非常奇怪的问题。我正在使用jQuery拦截特定的标签点击。
我有:
<a class="question">lorem ipsum</a>
<a class="question_selected">lorem ipsum</a>
<a class="question">lorem ipsum</a>
<a class="question">lorem ipsum</a>
我的jQuery是:
$("a.question").click(function(){.....});
它应截取<a>
点击class =“question”,但每当我点击<a class="question_selected">
时它也会拦截。
可能是什么问题?
编辑:
我实际上是在点击更改类。我点击的标签应该变为“question_selected”而其他所有标签都应该是“问题”。这是jQuery:$('a.question_selected').removeClass('question_selected').addClass('question'); $(this).addClass('question_selected').removeClass('question');
答案 0 :(得分:4)
从类名中删除下划线。也许jQuery中有一个关于它的错误。
否则,这不会直接回答您的问题,而是一些建议:
首先,我不是交换类,而是使用两个类:
<a class="question">lorem ipsum</a>
<a class="question selected">lorem ipsum</a>
然后,在你的jQuery中,我会缓存你的问题:
$questions = $('a.question');
然后你的jquery可以是:
$questions.click(function(){
$questions.filter('.selected').removeClass('selected');
$(this).addClass('selected');
})
答案 1 :(得分:0)
这对我来说很好。您的代码中的其他内容必须是冲突的。
答案 2 :(得分:0)
您是否忘记了结束标记?
你有没有做过任何定位,可能会将另一个元素的填充放在另一个元素的顶部?
您是否动态更新课程?您是在这些更新之前或之后分配点击处理程序吗?您确定不想要live()
吗?
答案 3 :(得分:0)
$("a.question").live('click',function(){
$(this).removeClass('question');
$(this).addClass('question_selected');
$(this).siblings('a').removeClass();
$(this).siblings('a').addClass('question');
});