18

我需要在 jQuery 中创建一个简单的函数,它将在其他几个函数中调用

$(document).ready(function() {
  function reload_cart() {
    alert('reload cart called');
  }
});
$(document).ready(function() {
  reload_cart(); //i need to call from here.
});
$(document).ready(function() {
  $('a.add_to_cart').live('click', function (e) {
    reload_cart(); //i need to call from here.
  });
});

我在萤火虫中遇到的错误:reload_cart() is not defined

4

3 回答 3

32

reload_cart$(document).ready()对于您的第一个回调是本地的。您不能从外部范围调用它。

您应该将您的功能合并在一起:

$(document).ready(function() {
    function reload_cart() {
        alert('reload cart called');
    }

    reload_cart();

    $('a.add_to_cart').live('click', function(e) {
        reload_cart();
    });
});

更好的解决方案是创建一个cart对象,添加reload到它的原型,然后在所有回调之外对其进行初始化。

于 2013-08-23T01:59:26.070 回答
8

是的,因为您在第一个范围内声明了该函数,$(document).ready(function(){})所以它在该函数范围之外将不可用。

我不知道你为什么会$(document).ready()不止一次打电话。尝试这个:

$(document).ready(function(){
   function reload_cart() {
       alert('reload cart called');
   }

   reload_cart(); //i need to call from here.


   $('a.add_to_cart').live('click', function(e) {
       reload_cart(); //i need to call from here.
   });
});

或者,您也可以在外部声明您的函数$(document).ready(),它将在全球范围内可用。

于 2013-08-23T01:57:57.053 回答
7

把你的函数定义:

function reload_cart() {
    alert('reload cart called');
}

外部文件。准备好了。

目前,其范围仅在 document.ready 处理程序内。

$(document).ready(function(){
//reload_cart is only available here
    function reload_cart() {
        alert('reload cart called');
    }
});
于 2013-08-23T01:58:16.130 回答