Доступ к основному javascript после загрузки jQuery

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

Я пытался сделать это с помощью функции jQuery $().load(), но это не позволяет мне вызывать javascript страницы B со страницы A.

Конкретный код: моя страница B содержит это:

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

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

$('.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("/relativepath/" + $(this).attr('id'));
    });

Это работает для статического контента (например, когда у меня есть статические вкладки в карусели). Теперь я хочу, чтобы это также работало для вкладок, которые добавляются динамически. Пример: Фаза 1: [вкладка 1][вкладка 2] Я нажимаю кнопку на вкладке 1, создается новая вкладка, и содержимое загружается из /a/относительного/пути

Шаг 2: [вкладка 1][вкладка 2][вкладка 3] Я нажимаю кнопку на вкладке 3, и новая вкладка должна быть добавлена, а содержимое из другого относительного пути должно быть загружено в карусель.

Надеюсь, я ясно изложил свои вопросы :)


person user485659    schedule 19.03.2012    source источник
comment
У вас должны быть открыты обе страницы, либо в дочернем окне, либо в дочернем iframe, чтобы сценарий взаимодействовал с обоими.   -  person Mark Schultheiss    schedule 20.03.2012


Ответы (1)


Вам нужен метод ".on()"... Каждый раз, когда я вижу AJAX и связывающий вопрос, это обычно ответ.

$('body').on("click", '.ref', 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("/relativepath/" + $(this).attr('id'));
});

Исходя из вашего вопроса, я не уверен, решит ли это вашу проблему, но вы заметите, что при использовании «.on()» вместо «.click()» он отслеживает начальный элемент селектора для «щелчка» на '.ref' независимо от того, существует ли элемент при анализе javascript/jQuery или после добавления элемента '.ref' в DOM.

person Eric Hodonsky    schedule 19.03.2012