2016-09-23 7 views
1

Beim Schreiben eines Plugins benötigte ich ein dynamisches System, um bestimmte Elemente oder Gruppen von Elementen auszuwählen, auf denen Code ausgeführt werden kann. Während der Code, den ich habe, völlig in Ordnung ist, habe ich das Gefühl, dass sie ein besserer Weg sind, es zu tun, aber ich kann nicht alles auffrischen.jQuery-Selektoren vereinfachen

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

Wie Sie sehen können, ist das absurd lang und nervig zu lesen. Nach allem, was ich weiß, ist dies der beste Weg, um es zu tun, aber wenn jemand irgendwelche Kommentare dazu hätte, würde ich es begrüßen.

+2

Ist dies ein weit verbreitetes ausgewählt, oder gibt es gemeinsame Aspekte wie diese, die Sie wickeln könnte in eine "Selector Generator" -Funktion? Zum Beispiel, übergeben Sie die 'elem.clicklight.mapName' und' event.target.area.group' als Parameter (oder auch 'elem' und' event'), die den Selektor zurückgeben könnten, den Sie haben? – Bwolfing

+2

Es ist üblich, in meinem Haupt-Plugin-Körper habe ich das und die gleiche Sache für ein Klick-Ereignis dupliziert. Ich erkannte, dass ich einen Schritt besser machen konnte, indem ich "event.target" durch "this" ersetzte. Ich habe nicht an eine Auswahlfunktion gedacht, die die Dinge aufräumen würde. – Turk

Antwort

2

Das ist ein gemeinsamer Code @Turk.

Aber Sie können sich mit der Variablen dagegen Ihre Wähler kürzer machen ..

etwas Einfaches wie:

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

Ja, das habe ich getan. JavaScript gibt mir immer das Gefühl, als würde ich schlechten Code schreiben, während ich es versuche und lerne, haha. Freut mich zu hören, dass ich es trotzdem richtig gemacht habe. – Turk

+0

haha, es ist der Ausdruck eines normalen Selektors, aber ich verstehe dein Gefühl bezüglich der Programmierung in JavaScript. Gern geschehen @Turk! – RPichioli