Я не уверен, как назвать этот вопрос, так как он затрагивает множество вопросов, но мы начнем с первого вопроса ...
Я пытался написать простой в использовании jQuery для включений (аналогично php или ssi) на статических html-сайтах. Всякий раз, когда он находит div.jqinclude
, он получает attr('title')
(который является моим внешним html-файлом), затем использует load()
для включения внешнего html-файла. После этого он меняет класс div на jqincluded
Так что мой основной index.html может содержать несколько строк, например:
<div class="jqinclude" title="menu.html"></div>
Однако в menu.html могут быть и другие вложенные включения. Поэтому необходимо выполнить первый уровень включений, а затем выполнить то же действие для вновь включенного содержимого. Пока все работает нормально, но очень многословно и углубляется только на пару уровней.
Как бы я сделал следующую повторяющуюся функцию для непрерывного цикла, пока на странице не останется больше элементов class="jqinclude"
? Я пробовал arguments.callee
и некоторые другие запутанные дурацкие попытки безрезультатно.
Мне также интересно знать, есть ли другой совершенно другой способ, которым я должен делать это.
$('div.jqinclude').each(function() { // begin repeat here
var file = $(this).attr('title');
$(this).load(file, function() {
$(this).removeClass('jqinclude').addClass('jqincluded');
$(this).find('div.jqinclude').each(function() { // end repeat here
var file = $(this).attr('title');
$(this).load(file, function() {
$(this).removeClass('jqinclude').addClass('jqincluded');
$(this).find('div.jqinclude').each(function() {
var file = $(this).attr('title');
$(this).load(file, function() {
$(this).removeClass('jqinclude').addClass('jqincluded');
});
});
});
});
});
});