2016-04-03 20 views
1

CSSクラスを<li>要素に追加しようとしましたが、ボタンをクリックしてもaddClassが機能しません。ここでjQuery - html要素にクラスを追加していないaddClass

は私のJSです:

$('.test').click(function(event) { 
    var centrum1 = $('.p17'); 
    $('section.bok-map').find(centrum1).addClass('active-region'); 
}); 

そして、この方法を探しているHTMLコード: enter image description here

問題がありますか? find()はtrueを返します。ここ
はデモです:したがってselectorの長さが0

まず、クラスがpl7ないp17と呼ばれた、あなたは正しい要素を選択していなかったとして、あなたは、エラーのカップルを持っていたhttp://demo.vrs-factory.pl/mapDemo/

+0

「.test」はどこですか? –

+0

'.find()'は 'jQ'でラップされた' element'を返すべきです – Rayon

+1

@Vertisanそれは私のために働きます。あなたはCSSのどこかで.active-regionを定義しましたか?私が '.active-region {color:red}'に設定した場合、それは動作します –

答えて

1

と第二に、removeClassを使用する場合は、クラス名の前に.を入れないでください。 removeClassを使用しているので、クラスをターゲットにしたいので、ドットを追加して指定する必要はありません。

<script> 
     var centrum1 = $('.pl7'); 

     $('.test').click(function(event) {    
      $('section.bok-map').find(centrum1).removeClass('pl7'); 
     }); 

</script> 

また、それはあなたが必ずしも変数に代入する必要はありません一度あなただけの$(.pl7)を参照しているので、ことは注目に値するかもしれません。以下のように書くこともできます。それはあなた次第です。

$('.test').click(function(event) {    
     $('section.bok-map').find('.pl7').removeClass('pl7'); 
    }); 
+0

'$( '.pl7');' – Rayon

+0

@RayonDabreをキャッシュするポイントはありません。 –

+0

私は複数回選択されたキャッシュ要素を取得しますが、一度選択された要素をキャッシュする方が効率的ですか? –

関連する問題