2016-09-23 3 views
1

При написании плагина я обнаружил, что мне нужна динамическая система для выбора определенных элементов или групп элементов для выполнения кода. Хотя код, который у меня работает, полностью прекрасен, я чувствую, что они могут быть лучшим способом сделать это, но, похоже, не могут что-то прояснить.упрощающие селектора jQuery

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

Как вы можете видеть, это абсурдно долго и досадно читать. Для всех, кого я знаю, это лучший способ сделать это, но если бы у кого-нибудь были какие-то замечания по этому поводу, я был бы признателен.

+2

Это общий выбран, или существуют общие аспекты, как это, что вы могли бы обернуть в функция «селекторного генератора»? Например, передав 'elem.clicklight.mapName' и' event.target.area.group' в качестве параметров (или даже 'elem' и' event'), которые могут вернуть селектор, который у вас есть? – 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

haha ​​это выражение нормального селектора, но я понимаю ваше чувство о кодировании в JavaScript. Добро пожаловать @ Тюрк! – RPichioli

 Смежные вопросы

  • Нет связанных вопросов^_^