选择器的jQuery问题

时间:2011-07-03 03:09:04

标签: jquery jquery-selectors

我有一个非常奇怪的问题。我正在使用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');

4 个答案:

答案 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)

http://jsfiddle.net/gJtDS/1/

这对我来说很好。您的代码中的其他内容必须是冲突的。

答案 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'); 

});