2016-09-23 7 views
1

プラグインの作成では、コードを実行する特定の要素または要素のグループを選択するための動的システムが必要でした。私が使っているコードは完全にうまくいきますが、もっと良い方法があるかもしれないと思っていますが、何かを上手くいくことはできません。jQueryセレクタの簡略化

$('map[name='+ elem.clicklight.mapName +'] > area[data-group='+ event.target.area.group +']').each(function() { 
    //some stuff to do 
}); 

ご覧のとおり、これは不当に長く、読んで迷惑です。私はこれを行うには最良の方法だと私は知っているが、誰かにそれについてのコメントがあればそれを感謝するだろう。

+2

が、これは選択された共通です、またはあなたにラップすることができ、このような共通点があります「セレクタジェネレータ」機能?例えば、あなたが持っているセレクタを返すことができるパラメータ(あるいは 'elem'と' event')として 'elem.clicklight.mapName'と' event.target.area.group'を渡しますか? – Bwolfing

+2

私の主なプラグインの本体には共通していますが、同じことがclickイベントのために重複しています。代わりに、 'event.target'を' this'に置き換えることで、一歩進んだほうがいいと思いました。私はセレクタ機能については考えていませんでしたが、それは確かに物事をきれいにするでしょう。 – Turk

答えて

2

これは一般的なコード@Turkです。

しかし、あなたはあなたのセレクタを短くするために変数を使用して気にすることができます。..のような単純な

何か:

var el_name = elem.clicklight.mapName; 
var evt_tgt = event.target.area.group; 

$('map[name='+ el_name +'] > area[data-group='+ evt_tgt +']').each(function() { 
    //some stuff to do 
}); 
+1

それは私がやったことですね。 JavaScriptはちょうど私が私が試み、それを習得するときに悪いコードを書いているような気がします。とにかくそれを適切にやっていることを聞いてうれしい。 – Turk

+0

これは通常のセレクタの式ですが、JavaScriptでのコーディングについてのあなたの気持ちを理解しています。あなたは歓迎です@ターク! – RPichioli