Как создать и вызвать пользовательскую функцию в jQuery
Мне нужно создать простую функцию в 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
.
Ответы
Ответ 1
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
к его прототипу и инициализировать его вне всех обратных вызовов.
Ответ 2
Да, потому что вы объявили функцию в области первой $(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()
, и она будет доступна по всему миру.
Ответ 3
Поместите определение своей функции:
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');
}
});