如何在jQuery中创建和调用自定义函数

时间:2013-08-23 01:54:18

标签: jquery function

我需要在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.
  });
});

我在firebug中遇到的错误:reload_cart() is not defined

4 个答案:

答案 0 :(得分:29)

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添加到其原型中,并在所有回调之外初始化它。

答案 1 :(得分: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()之外声明您的功能,它将全局可用。

答案 2 :(得分:6)

放置你的函数定义:

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');
    }
});

答案 3 :(得分:0)

只需在此处添加大量知识

可以在$(document).ready()内部创建函数,并且可以这样定义

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

    //call your function, in another function or in html
    reload_cart();
});
然后可以像其他任何用户定义的方法一样在您的HTML中调用

reload_cart()