-1

我正在寻找一种将页面(页面 A)(我也创建 - 所以不是网络上的外部页面)动态加载到现有页面(页面 B)中的方法。目标是影响页面 B 上使用的 Javascript/jquery 中页面 A 的行为。示例:当单击页面 A 中的按钮时,我希望页面 B 上的 Javascript 对此做出反应。

我尝试使用 jQuery $().load() 函数来完成此操作,但这不允许我从页面 A 调用页面 B 的 javascript。

具体代码:我的页面 B 包含以下内容:

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

而且我有一个功能,它将向轮播添加一个新选项卡并将页面(页面 A)中的内容加载到此选项卡中。

$('.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 放入一个单独的文件中,并将两个主页链接为加载到该脚本的页面。然而,这并不能使他们共享上下文。

4

3 回答 3

0

jQuery 有一个单独的getScript方法来动态加载 JavaScript。

从页面 A 中删除您的内联代码并将其放入外部 JavaScript 文件中,将其称为页面 C。然后,在页面 B 上,执行以下操作:

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

也就是说,我敢打赌,您可以getScript通过重写页面 C 中的代码使其在DOM 元素上运行,并以通常的方式在页面 B.live中加载 pageC.js 来完全消除这种情况。<head>

于 2012-03-19T15:01:51.673 回答
0

加载页面后,尝试重新绑定事件。例如,如果你这样做

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

在您 .load 页面之前,使用 .load 加载的按钮不会受到影响。

我建议你将你的事件绑定在一个函数中,然后在 .load 完成后调用它。但是不要忘记取消绑定现有的绑定,因为双重执行。

于 2012-03-19T15:02:52.790 回答
0

我怀疑这可能与它有关:来自 load() 的 JQuery 文档:

“jQuery 使用浏览器的 .innerHTML 属性来解析检索到的文档并将其插入到当前文档中。在此过程中,浏览器通常会从文档中过滤出 <html>、<title> 或 <head> 元素等元素。作为结果,.load() 检索到的元素可能与浏览器直接检索到的文档不完全相同。”

您的 javascript 在页面 B 中的位置在哪里?在头部?

于 2012-03-19T15:01:12.567 回答