2013-08-23 8 views
15

muszę stworzyć prostą funkcję jQuery, która będzie zadzwonić w ciągu kilku innych funkcjisposób tworzenia i wywołać funkcję niestandardową w 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. 
    }); 
}); 

Błąd pojawia się w Firebug: reload_cart() is not defined.

Odpowiedz

25

reload_cart jest lokalny pierwszego $(document).ready() zwrotnego. Nie możesz wywołać tego z zewnętrznego zakresu.

powinny scalić swoje funkcje razem:

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

    reload_cart(); 

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

Jeszcze lepszym rozwiązaniem byłoby stworzenie cart obiektu, dodać reload jego prototypu, i zainicjować go poza wszystkie wywołania zwrotne.

+0

dzięki za szybką reakcję. Czy mogę mieć przykładowy kod jak utworzyć obiekt koszyka i wywołać go z dowolnego miejsca. Nie mam zbyt dużego doświadczenia w prototypie. – user1911703

+0

MDN ma bardzo ładne artykuły na te tematy: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Inheritance_and_the_prototype_chain –

7

Tak, ponieważ zadeklarowano funkcję w zakresie pierwszego $(document).ready(function(){}), więc nie będzie ona dostępna poza tym zakresem funkcji.

Nie jestem pewien, dlaczego zadzwoniłbyś pod numer $(document).ready() więcej niż raz. Spróbuj tego:

$(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. 
    }); 
}); 

Alternatywnie można również zadeklarować swoją funkcję poza $(document).ready() i będzie dostępny na całym świecie.

6

Połóż definicję funkcji:

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

Poza document.ready.

Obecnie jest on dostępny tylko w dokumencie.

$(document).ready(function(){ 
//reload_cart is only available here 
    function reload_cart() { 
     alert('reload cart called'); 
    } 
}); 
Powiązane problemy