Autor | Zpráva | ||
---|---|---|---|
quatzael Profil |
#1 · Zasláno: 25. 6. 2015, 13:28:50
Potřeboval bych v jQuery vytvořit nějaký selektor, který by dokázal fungovat na více tříd.
Řekněme, že někde v poli budu mít nějaký varianty pro vytváření tříd z jedný skupiny a následně z toho bych potřeboval selektor, který by fungoval na všechny varianty. var type = ["aaa", "bbb", "ccc"]; $(".form-"+type+"-item") To znamená, aby ten selektor v tomto případě fungoval na třídy: .form-aaa-item .form-bbb-item .form-ccc-item Jde to prosím nějak? Předem díky za všechny rady a nápady jak to vyřešit. |
||
Radek9 Profil |
quatzael:
Docela hezky to jde přes Array#map :
$(type.map(function (val) { return ".form-" + val + "-item"; }).join(",")); Tuhle funkci ale nepodporuje IE 8, tam by se to muselo řešit polyfillem, nebo cyklem: var classNames = []; for (var i = 0; i < type.length; ++i) { classNames.push(".form-" + type[i] + "-item"); } $(classNames.join(",")); Možná by ale taky neškodilo tu strukturu udělat trochu jinak. |
||
quatzael Profil |
#3 · Zasláno: 25. 6. 2015, 13:38:43
Radek9:
Dík za radu. Mě samozřejmě napadlo řešení pomocí regulárních výrazů (který teda mimochodem moc neovládám), ale to jQuery nejspíš nepodporuje.. |
||
Kcko Profil |
quatzael:
Pokud mají něco společného a můžeš to takhle cílit tak můžeš použít selektory ^="form-" nebo $="-item"
Nebo si napiš vlastní selektor a v něm regexpy můžeš použít. A pokud je neumíš tak se je nauč. |
||
Chamurappi Profil |
#5 · Zasláno: 25. 6. 2015, 14:16:12
Reaguji na quatzaela:
$(".form-" + type.join("-item, .form-") + "-item") „ale to jQuery nejspíš nepodporuje“ Protože to CSS selektory nepodporují. |
||
quatzael Profil |
#6 · Zasláno: 25. 6. 2015, 17:11:04
Chamurappi:
Díky moc, to se zdá jako nejlepší řešení! „Na tvém místě bych se zamyslel, jestli to, co chci, nejde vymyslet lépe.“ To by určitě nějak šlo, ale nechci se už v tom víc rejpat. Teď to hodně zefektňuju v php, a v souvislosti s tím i v js, ale tohle zatím vypadá jako docela elegantní řešení.. |
||
Časová prodleva: 9 let
|
0