2017-04-01 11 views
0

上の複数のものを定義してそれは私のコードですは単一のセレクタ

$('body').on('click', '.class2', function() { 
    some other things ... 
}); 

しかし、行うには間違った方法のようです...私のIDE(pyCharm)は、「重複するjQueryセレクタを使用しないでください」と言っています。

私は何を知ることができますか?

答えて

2

ハンドラ内で条件文を使用するのと1つのクリックハンドラでそれを解決し、.is()コールと区別することもできますが、コードを読みにくくする可能性があります。

$('body').on('click', '.class1, .class2', function() { 
    if ($(this).is('.class1')) { 
     sth ... 
    } else { 
     some other things ... 
    } 
}); 
1

あり、構造的に間違って何もありませんし、あなたのIDEを使用して、変数やチェーン複数で$('body')on()

var $body=$('body'); 

$body.on('click', '.class1', function(){...}); 
$body.on('click', '.class2', function(){...}); 
をキャッシュすることができIDEを満たすために、コードの妥当性

に関連するよりも、指向多くのパフォーマンスです誤報を与えています

それとも

$('body').on('click', '.class1', function(){...}) 
     .on('click', '.class2', function(){...}); 

別のアプローチは、複数クラッセのためにワンクリックリスナーを使用することです

$('body').on('click', '.class1', function() { 
    sth ... 
}).on('click', '.class2', function() { 
    some other things ... 
}); 

あなたは

:-) pyCharmを沈黙されます:あなたは、彼らが同じセレクタに作用してチェーン.on呼び出しを、することができます

$('body').on('click', '.class1, .class2', function(){ 
    if($(this).hasClass('class1')){ 
    // do class 1 stuff 
    }else{ 
    // do class 2 stuff 
    }  
}); 
関連する問題