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

use*_*703 17 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.
  });
});
Run Code Online (Sandbox Code Playgroud)

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

Ble*_*der 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();
    });
});
Run Code Online (Sandbox Code Playgroud)

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


ced*_*d-b 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.
   });
});
Run Code Online (Sandbox Code Playgroud)

或者,您也可以在外面声明您的功能$(document).ready(),它将全局可用.


Akh*_*ran 6

把你的功能定义:

function reload_cart() {
    alert('reload cart called');
}
Run Code Online (Sandbox Code Playgroud)

外面的文件.已经.

目前,它仅限于document.ready处理程序.

$(document).ready(function(){
//reload_cart is only available here
    function reload_cart() {
        alert('reload cart called');
    }
});
Run Code Online (Sandbox Code Playgroud)