обратный вызов jquery и проблема с вложенностью
Вопрос
Я действительно в замешательстве и не знаю, как быть дальше, возможно, вы сможете мне помочь :)
Я создал html-страницу с меню, которое загружает внешний контент в div (все сделано с помощью jquery и ajax-load).
Если я хочу добавить вторую функцию, ничего не происходит, и я не уверен насчет вложенности, правильно это или нет.
Вот две функции, первая загружает целую html-страницу, вторая загружает внешний div в div предыдущего загруженного файла (надеюсь, что я описал это так, чтобы вы могли это понять :)) (numRand - случайное число, не важное для вопроса).
function changeMenu(menupunkt) {
$(function(){
$('#mainContent').fadeOut('fast', function(){ $("#mainContent").load(menupunkt+".html?"+numRand);});
$('#mainContent').fadeIn('fast');});
return false;
}
Вот второй код:
function changeSubMenu(submenupunkt,subdiv) {
$(function(){
$('#htmlContainer').fadeOut('fast',function(){ $("#htmlContainer").load(submenupunkt+".html?"+numRand+" div#"+subdiv);});
$('#htmlContainer').fadeIn('fast');});
return false;
}
Я хочу объединить две функции, чтобы я мог вызвать функцию:
someFunction(menupunkt,submenupunkt,subdiv)
Это должно сначала загрузить menupunkt.html и если это действие завершено, оно должно загрузить div.
если я хочу загрузить только menupunkt и без submenupunkt или subdiv, как я могу вызвать функцию?
Я надеюсь, что смог бы объяснить свой вопрос, чтобы вы, ребята, могли следить за ним, немного сложно, я знаю :)
Заранее благодарю вас!
Решение
прежде всего
$(function() { .... code here .... });
является сокращением для
$(document).ready(function() { .... code here .... });
это jQuery-способ настройки функции для выполнения при загрузке DOM.вы используете это внутри своих функций changeMenu
и changeSubMenu
в чем нет необходимости (если не вы выполняете обе функции сразу, когда страница начинает загружаться, но это было бы странный способ все наладить).
В load()
команда принимает функцию обратного вызова, которая будет выполнена после завершения загрузки.Например,
$("#mainContent").load(menupunkt+".html?"+numRand, [callback here]);
[callback]
может быть либо анонимной функцией (встроенная функция), либо именованной функцией.
Надеюсь, это поможет