2017-08-25 109 views
6

我目前在一個存儲在一個函數中的數組中存儲了幾個jQuery片段。一旦我從我的代碼庫調用函數,就會執行每個jQuery代碼片段。因此,阻止我在陣列中工作。每次調用函數時都不要執行存儲在數組中的jQuery

下面的代碼是一個例子:

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]; 
} 

我怎麼能保證,當deselect()被調用時,只有少數的數組元素得到執行,而不是所有的人?

謝謝!

回答

5

你做錯了。數組元素在您自行聲明時執行。

而是一切你可以做

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

如果你沒有任何其他選擇框,除了這些,你也可以簡單地做

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

如果你不」不希望它們立即執行,使它成爲一組函數,然後在()的循環中調用它們。

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](); 
} 
相關問題