2016-09-23 67 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

這是常見的,在我的主要插件正文中,我有和單擊事件相同的事情重複。我意識到我可以通過用'this'替換'event.target'來取得更好的效果。儘管我沒有想到選擇器功能,但它肯定會清理乾淨。 – 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編碼的感覺。不客氣@Turk! – RPichioli