gpt4 book ai didi

javascript - 为什么我的函数不会在我的 Ajax 事件之后或在(文档).ready 上被调用?

转载 作者:行者123 更新时间:2023-11-28 03:25:39 24 4
gpt4 key购买 nike

我有一个名为 embedAmplienceModules() 的 javaScript 函数它位于一个外部 js 文件中,该文件需要调用我们网站上的某些促销横幅,这些横幅有一个名为“amplience-module”的类。此 javaScript 支持在名为 Amplience 的第 3 方合作伙伴内部创建的这些横幅上运行的功能,例如幻灯片、数字目录、直接链接到产品的生活方式图像上的热点链接等。

此脚本需要在两个事件之一发生后加载:

  1. 点击侧边导航栏中的类别选项,通过 Ajax 刷新页面内容。
  2. 点击链接到导致页面刷新的类别页面的横幅。

问题:问题是,我的脚本通过上面的选项 1 而不是选项 2 成功加载。它只加载脚本一次。因此,如果我有三个 Amplience 促销横幅,脚本只会加载最后一个。我已经尝试将调用包装到我的 embedAmplienceModules() (document).ready 中的函数但这不起作用。

在另一个用于所有全局站点 js 的外部 javaScript 文件中,我们有一个 Ajax 事件处理程序,其中调用了我的 embedAmplienceModules()。功能,在 Ajax 事件/刷新后工作正常。

下面是javaScript文件的内容。对该文件的调用位于 <head> 中。网站的标签。

function embedAmplienceModules() {

$('.amplience-module').each(function() {

var divId = $(this).attr('id'); // div id eg.'amp-m1-area'
var ampId = $(this).data("ampid"); // Pulls amp id eg. 'eba2d785-f2c1-494f-8f92-b3d95dff80f8' from 'data-ampid' attribute in contentmodules.html template
var ampDimWidth = $(this).data("ampdimwidth"); // Pulls amp module width eg. '747' from 'data-ampdimwidth' attribute in contentmodules.html template
var ampDimHeight = $(this).data("ampdimheight"); // Pulls amp module height eg. '241' from 'data-ampdimheight' attribute in contentmodules.html template
var ampBaseDir = $(this).data("ampbasedir"); // Pulls player file path from 'data-ampbasedir' attribute in contentmodules.html template
var options = {
target: divId,
width: ampDimWidth,
height: ampDimHeight,
vars: {id: ampId, resolveJSPath:"true"},
params: {allowScriptAccess: "always", base: ampBaseDir, deepLinking:"false",wmode: "transparent"},
src: [
{type:"html5", src: ampBaseDir+"tcplayer.js", xd: [ampBaseDir+"xd.html"]},
{type:"swf", src: ampBaseDir+"tcplayer.swf",version:"9.0.0"}
]
};

options = $.extend(options);

interact.embedApp(options); // the actual Amplience library call

$(this).removeClass("amplience-module"); // remove the amplienceModule class so this does not get run again for this module later. Must have this.

});

}

这是使用 data-XXX 属性根据在后端输入的特定 Amplience 横幅的详细信息存储适当信息的 html。为了更容易理解,我在这里删除了一些条件值。这些是根据针对类别输入后端的值提取的。

<div id="amp-m1-area" class="amplience-module" data-ampid="eba2d785-f2c1-494f-8f92-b3d95dff80f8" data-ampdimwidth="241" data-ampdimheight="241" data-ampbasedir="path/to/amp/directory"></div>

加载顺序是:

  1. 包含我的文件 embedAmplienceModules()功能
  2. 内容,即包含 data-XXX atts 的 HTML
  3. 包含调用 embedAmplienceModules() 的全局 js 文件Ajax 事件函数

关于为什么这个函数不会加载到 (document).ready 上有什么想法吗?

** 答案**我删除了'options = $.extend(options);'行,它成功了!

最佳答案

我删除了“options = $.extend(options);”行,它成功了!

关于javascript - 为什么我的函数不会在我的 Ajax 事件之后或在(文档).ready 上被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21381293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com