2011-12-27 87 views
0

我已在jQuery中以下內容:從另一個函數內部調用函數時可以執行不同的函數嗎?

function SelectAccounts() { 
    if ($("#AccountID option[value='0000']").length > 0) { 
     $.ajax({ 
      url: "/Administration/Accounts/GetOptions", 
      data: { ac: $('#AccountID').val() 
      }, 
      success: function (data) { 
       $('#AccountID').html(data); 
      } 
     }); 
    } 
    SelectProducts(); 
} 

function SelectProducts() { 
    if ($("#ProductID option[value='0000']").length > 0) { 
     $.ajax({ 
      url: "/Administration/Products/GetOptions", 
      data: { ac: $('#AccountID').val(), 
        pr: $('#ProductID').val() 
      }, 
      success: function (data) { 
       $('#ProductID').html(data); 
      } 
     }); 
    } 
} 

當帳戶改變我想要的產品列表更改,所以我把SelectProducts();在該函數的底部。不過,我想它做一個Ajax調用,即使下面是不正確的如果selectProducts()從selectAccounts內()函數調用

$("#ProductID option[value='0000']").length > 0) 

有一個簡單的方法,我可以做到這一點。我想我不得不將一些參數傳遞給seconf函數,但我不知道該怎麼做。

+0

爲什麼不只是刪除'if'?如果你的意思是不同的Ajax調用,爲什麼你不能使用'else'? – FakeRainBrigand 2011-12-27 05:25:09

回答

1

聲明變量:

var force = false; 

更改函數接受參數:撥打第二功能時

function SelectProducts(force){ 

    if (force || $("#ProductID option[value='0000']").length > 0) { 

    ... 
    } 
} 

然後做:

SelectProducts(true); 

希望有所幫助。

+0

這看起來不錯。我必須申報可變力量嗎?如果我不申報,該怎麼辦?有沒有辦法讓它默認爲false,如函數SelectProducts(force = false)? – 2011-12-27 05:32:31

+0

與其他語言相比,這對JS來說不那麼簡單:http://www.openjs.com/articles/optional_function_arguments.php – phirschybar 2011-12-27 05:34:35

+2

您不需要'var force = false;'line,具有'function SelectProducts(force) '足以宣佈變量。如果你在沒有任何參數的情況下調用'SelectProducts()',那麼'force'將會是'undefined',這是虛假的。基本上,javascript會像後面的'SelectedProducts(force = undefined)'那樣對待它,就像'SelectProducts(force = false)'一樣適合你。 – Ryan953 2011-12-27 05:42:19

相關問題