2012-03-19 7 views
-1

Я ищу способ загрузки страницы (страница A) (которую я также создаю, а не внешнюю страницу в Интернете) на существующую страницу (страница B) динамически. Цель состоит в том, чтобы повлиять на поведение страницы A в Javascript/jquery, используемой на стр. B. Пример: при нажатии кнопки на странице A я хочу, чтобы на этом этапе JavaScript на странице B реагировал.Загрузить HTML-содержимое через jQuery

Я пытался сделать это с помощью JQuery $() функция нагрузки(), но это не позволяет мне называть JavaScript страницы B от страницы А.

Конкретный код:. моя страница B содержит следующее:

jQuery(document).ready(function() { 
    jQuery('#mycarousel').jcarousel({ 
     initCallback : carousel_callback 
    }); 
}); 

и у меня есть функция, которая будет добавлять новую вкладку для карусельного и загрузки содержимого из страницы (страницы а) в этой вкладке.

$('.ref').click(function() { 
     var newTabId = jQuery('#mycarousel').jcarousel('size') + 1; 
     carousel 
       .add(
         newTabId, 
         "<li style='width: 50%;'><div id='tab" + newTabId + "' style='height: auto;'></div></li>"); 
     // load content 
     $("#tab" + newTabId).load("/researchPad" + $(this).attr('id')); 
    }); 

Это работает для статического контента (поэтому, когда у меня есть статические вкладки в карусели). Теперь я хочу, чтобы это также работало для вкладок, которые добавляются динамически.

Как одна из предложенных реакций, я попытался поместить javascript в отдельный файл и связать как главную страницу, так и страницу, загружаемую в этот скрипт. Однако это не делает их частью контекста.

+2

Почему бы не включить один и тот же javascript на обе страницы? – jrummell

+0

Я постараюсь сделать свой вопрос более конкретным (к сожалению, я не могу показать пример в это время): страница В содержит jCarousel, который содержит загруженные страницы.Когда на странице A нажата кнопка, в карусель, в который загружается новый контент, должна быть добавлена ​​новая вкладка. Поэтому мне не нужны только функции javascript на странице B, мне также нужен контекст. Вот почему я пытаюсь найти способ ссылаться на контекст javascript страницы B со страницы A. – user485659

+0

Так загрузите свой html (контекст) с помощью '$ .load()', а затем укажите те же js в обоих страницы. Не видя какого-то кода, трудно понять, что именно вы пытаетесь сделать. – jrummell

ответ

0

Я подозреваю, что это могло бы иметь что-то делать с ним: Из документов JQuery для нагрузки():

«JQuery использует свойство .innerHTML браузера для разбора извлеченного документа и вставить его в текущий документ. Во время этого процесса браузеры часто фильтруют элементы из документа, такие как < html>, < title> или < head> elements. В результате элементы, полученные методом .load(), могут быть не такими, как если бы документ был извлекается непосредственно браузером ».

Где ваш javascript на странице B? В главном разделе?

0

jQuery имеет отдельный метод загрузки JavaScript динамически.

Удалите встроенный код со страницы А и поместить во внешний файл JavaScript, вызовите его страницу C. Затем на странице B, делать что-то вроде:

$.load('pageA.html', function(data) { 
    $.getScript('pageC.js'); 
}); 

Тем не менее, я готов поспорить, вы можете устранить getScript полностью переписав код на странице C, так что работает на .live DOM элементов, и загрузка pageC.js в обычном порядке в <head> странице B.

+0

Спасибо за предложение, но это не совсем то, что я имел в виду; Я описал точную проблему в исходном вопросе. – user485659

0

после .load страницы, попробуйте переприсваивание ваши события. например, если вы это сделаете

$(button).click(function(){blabla}) 

Прежде чем вы загружаете страницу, кнопки, загруженные с помощью .load, не будут затронуты.

Я предлагаю вам связать события в функции, а затем вызвать ее после завершения загрузки. Но не забудьте отвязать существующие привязки из-за двойного выполнения.

Смежные вопросы