Autor Zpráva
quatzael
Profil
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
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
Reaguji na quatzaela:
$(".form-" + type.join("-item, .form-") + "-item")
Na tvém místě bych se zamyslel, jestli to, co chci, nejde vymyslet lépe.

ale to jQuery nejspíš nepodporuje
Protože to CSS selektory nepodporují.
quatzael
Profil
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í..

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0