2011-07-03 8 views
1

私は非常に奇妙な問題があります。私は特定のタグのクリックを傍受するためにjQueryを使用しています。セレクタの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_selected">をクリックすると、クラス= "質問" それはまた、インターセプトされ<a>クリックを傍受する必要があります。

何が問題なのですか?

EDIT: 実際にクリックしてクラスを変更しています。私がクリックしたタグは "question_selected"になり、その他は "question"になります。ここではjQueryのは、次のとおりです。$('a.question_selected').removeClass('question_selected').addClass('question'); $(this).addClass('question_selected').removeClass('question');

+0

ご質問自体は不完全です。 「何かをクリックするたびに」何を?また、イベントハンドラは、1回目、3回目、4回目の 'a'クリックで起動します。 – Mrchief

+0

@Murchief:このコメントが表示されるまでにページを更新することができます。 – BoltClock

答えて

4

クラス名からアンダースコアを削除します。おそらくjQueryにはバグがあります。

それ以外の場合、これは直接あなたの質問に答えていませんが、いくつかの提案:すべての

まず、代わりにクラスを交換するのは、私はちょうど2つのクラスを使用したい:次に

<a class="question">lorem ipsum</a> 
<a class="question selected">lorem ipsum</a> 

を、

$questions = $('a.question'); 

そしてあなたのjQueryを使用できます:あなたのjQueryのでは、私はあなたの質問をキャッシュしたい

$questions.click(function(){ 
    $questions.filter('.selected').removeClass('selected'); 
    $(this).addClass('selected'); 
}) 
+0

私は確信していませんが、jQueryが_を使って私の問題を抱えていたようです。私はDAのソリューションに従っています。 お返事いただいた皆さん、ありがとうございました。あなたの努力のすべては、私が問題を診断するのを助けました:) – Blueboye

0

終了タグを忘れましたか?

もう1つの要素の上にパディングを配置する可能性のある配置を行ったことがありますか?

クラスを動的に更新していますか?これらの更新の前後にクリックハンドラを割り当てていますか? live()を代わりに使用したくないですか?

0
$("a.question").live('click',function(){ 

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

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

});