2011-12-27 102 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

相关问题