2017-08-25 30 views
6

Aktualnie przechowuję kilka fragmentów jQuery wewnątrz tablicy, która jest przechowywana wewnątrz funkcji. Po wywołaniu funkcji z mojej bazy kodu, każdy fragment kodu jQuery jest wykonywany. Stąd, uniemożliwiając mi pracę z tablicą.Nie uruchamiaj jQuery przechowywanej wewnątrz tablicy za każdym razem, gdy funkcja nazywa się

Poniższy kod jest przykładem:

var remove = [ 
    jQuery("#mesh option:selected").removeAttr("selected"), 
    jQuery("#pipetype option:selected").removeAttr("selected"), 
    jQuery("#caboption option:selected").removeAttr("selected"), 
    jQuery("#bedsize option:selected").removeAttr("selected"), 
    jQuery("#model option:selected").removeAttr("selected"), 
    jQuery("#year option:selected").removeAttr("selected"), 
]; 


for (var i = 0; i <= amount; i++) { 
    remove[i]; 
} 

Jak mogę zapewnić, że gdy deselect() nazywa, to tylko kilka elementów tablicy zostanie wykonany zamiast nich wszystkich?

Dzięki!

Odpowiedz

5

Robisz to źle. Elementy tablicowe są wykonywane, gdy deklarujesz je jako własne.

Zamiast tego wszystkiego można po prostu zrobić

var remove = [ "mesh","pipetype", "caboption","bedsize", "model","year"]; 
for (var i = 0; i <= amount; i++) { 
    jQuery("#"+remove[i]+" option:selected").removeAttr("selected"), 
} 

Jeśli nie mają żadnych innych wybranych pól oprócz nich można też po prostu zrobić

$("select option").prop("selected", false); 
3

Jeśli don” t chcą, aby były wykonywane natychmiast, tworzą szereg funkcji i wywołują je w pętli z ().

var remove = [ 
    () => jQuery("#mesh option:selected").removeAttr("selected"), 
    () => jQuery("#pipetype option:selected").removeAttr("selected"), 
    () => jQuery("#caboption option:selected").removeAttr("selected"), 
    () => jQuery("#bedsize option:selected").removeAttr("selected"), 
    () => jQuery("#model option:selected").removeAttr("selected"), 
    () => jQuery("#year option:selected").removeAttr("selected"), 
]; 


for (var i = 0; i <= amount; i++) { 
    remove[i](); 
}