Autor | Zpráva | ||
---|---|---|---|
Milan1236000 Profil |
Ahoj,
mám pár proměnných a potřeboval bych je nějakým způsobem "zřetězit" do jednoho řádku. Pokud to zkouším s proměnnými, zdá se, že to nefunguje. Funguje mi jen řetěz přímých konkrétních selektorů na stránce. $(`${$reason}, ${$quantity}`).trigger("change"); // nejde $([$reason, $quantity]).trigger("change"); // nejde $($reason + $quantity).trigger("change"); // nejde $("#reasonField, #QuantityField").trigger("change"); Díky. |
||
Kajman Profil |
#2 · Zasláno: 27. 5. 2019, 23:50:59
Pokud jsou v proměnných $reason a $quantity instance jQuery, tak použitje metodu add.
$reason.add($quantity).trigger("change") |
||
Milan1236000 Profil |
#3 · Zasláno: 29. 5. 2019, 20:25:33
Kajman:
A nějak na způsob, jak jsem uvedl, by to nešlo? Třeba když mám takto 5 proměnných se selektory, tak to musím zapsat jako $reason.add($quantity).add($var1).add($var2).add($var3).trigger("change"); ? Samozřejmě bych místo toho mohl udělat var $fields = $("#id1, #id2, #id3, #id4, #id5"); $fields.trigger("change"); Díky za odpověď. :) |
||
Kcko Profil |
#4 · Zasláno: 29. 5. 2019, 20:50:15
Milan1236000:
„jestli by ty jednotlivé proměnné nešly nějak zřetězit nebo tak něco“ No lze a to tak jak Ti ukázal Kajman. Jedna proměnná navíc Ti taky vadí, tak co hledáš tedy za způsob? |
||
_es Profil |
Milan1236000:
> Samozřejmě bych místo toho mohl udělat var $fields = $("#id1, #id2, #id3, #id4, #id5"); $fields.trigger("change"); No tak môžeš mať aj skoro rovnaký tvoj kód bez „premennej naviac“: $("#id1, #id2, #id3, #id4, #id5").trigger("change"); |
||
Milan1236000 Profil |
Kcko:
Psal jsem to hned v prvním příspěvku, jaký způsob myslím tím "řetězením": $(`${$reason}, ${$quantity}`).trigger("change"); // nejde $([$reason, $quantity]).trigger("change"); // nejde $($reason + $quantity).trigger("change"); // nejde Škoda, že třeba místo $reason.add($quantity).add($var1).add($var2).add($var3).trigger("change"); $reason.add($quantity, $var1, $var2, $var3).trigger("change"); Snad je jasné, kam tím mířím. Takový malý nedostatek jQuery. Třeba něco takového v budoucnu vývojáři přidají. :) _es: To je taky možnost, jenže proč zbytečně duplikovat konkrétní názvy elementů, když je mám všechny v proměnných a pracuji s nimi na více místech... :) |
||
_es Profil |
#7 · Zasláno: 29. 5. 2019, 22:13:02
Milan1236000:
No tak predsa môžeš stále podobne použiť Kajmanov kód, akurát namiesto premenných tam dáš výrazy, ktorých výsledkom budú spomínané „instance jQuery“. Napríklad si môžeš aj podobne vytvoriť pole [premenná1, premenná2, premenná3] a pod.
|
||
Kajman Profil |
Na poli jQuery objektů můžete zavolat metodu Array.reduce, která zavolá add postupně na jeho prvky...
[$reason, $quantity, $var1, $var2, $var3].reduce((o,a)=>o.add(a),$()).trigger("change"); Nebo si do jQuery přidat vlastní metodu, která bude akceptovat libovolný počet parametrů, když po ní tolik toužíte. Něco jako jQuery.fn.extend({ addArray: function(arr) { return arr.reduce(function(o,a){return o.add(a)},this); }, addAll: function() { return this.addArray([].slice.call(arguments)); } }); A pak můžete používat $reason.addAll($quantity, $var1, $var2, $var3).trigger("change"); $().addArray([$reason, $quantity, $var1, $var2, $var3]).trigger("change"); |
||
Kcko Profil |
#9 · Zasláno: 30. 5. 2019, 00:51:08
Milan1236000:
Chápu, nicméně všechny 3 příklady co jsi uvedl jsou blbost, už jen od pohledu jak bys to chtěl zapisovat. Kajman Ti nabídl hezké řešení, já ještě doplním each => Select multiple jQuery objects with .add() |
||
Milan1236000 Profil |
#10 · Zasláno: 31. 5. 2019, 02:59:19
Super, díky za tipy. :)
|
||
Časová prodleva: 5 let
|
0