JQuery проблема с селектором - PullRequest
1 голос
/ 03 июля 2011

У меня очень странная проблема. Я использую 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">.

В чем может быть проблема?

EDIT: Я на самом деле меняю классы по клику. Тег, который я нажимаю, должен стать «question_selected», а все остальные должны быть «question». Вот jQuery: $('a.question_selected').removeClass('question_selected').addClass('question'); $(this).addClass('question_selected').removeClass('question');

Ответы [ 4 ]

4 голосов
/ 03 июля 2011

Удалите подчеркивание из имени класса.Возможно, в 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');
})
0 голосов
/ 03 июля 2011
$("a.question").live('click',function(){

    $(this).removeClass('question');
    $(this).addClass('question_selected'); 

    $(this).siblings('a').removeClass(); 
    $(this).siblings('a').addClass('question'); 

});
0 голосов
/ 03 июля 2011

Вы забыли закрывающий тег?

Сделали ли вы что-нибудь с позиционированием, которое могло бы поместить отступы от другого элемента поверх другого?

Вы динамически обновляете классы? Вы назначаете обработчик кликов до или после этих обновлений? Вы уверены, что не хотите live() вместо этого?

0 голосов
/ 03 июля 2011

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

Это прекрасно работает для меня.Что-то еще в вашем коде должно быть противоречивым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...