【问题标题】:Script doesn't run after load a div with ajax使用 ajax 加载 div 后脚本不运行
【发布时间】:2016-07-24 01:56:08
【问题描述】:

当我转到我的页面时,我有脚本 audiojs 用于更改 html 中音频标签的样式,它可以正常工作,但是当我单击一个按钮以使用函数加载 jQuery 重新加载 div(此 div 包含音频标签)时,样式删除了audiojs,我尝试在使用jQuery getScript加载div后获取脚本,但脚本加载多次导致我的浏览器停止。

这是调用audiojs的函数

audiojs.events.ready(function() {
  audiojs.createAll();
});

我想要一个不再调用此函数的解决方案,谢谢

【问题讨论】:

  • 如果您“重新加载” div,您会丢失所做的更改,因此请不要重新加载或重新申请

标签: javascript jquery html ajax audiojs


【解决方案1】:

尝试在脚本中添加一个新的脚本标签,以便在您的代码中重新加载,如下所示:

 <script language="text/javascript">
   function audiojs()
   {
      var div= document.getElementsByTagName('head')[0];
      var script= document.createElement('script');
      script.type= 'text/javascript';
      script.src= 'audiojs.js';
      div.appendChild(script);
   }
   audiojs();
</script>

我希望你现在能得到一些想法。还要检查你的缓存。

【讨论】:

  • 我认为问题不是来自脚本标签,我认为是来自这个函数 audiojs.createAll(),所以我想要一个 if 语句来检查这个函数是否也在运行。如果你想要kolber.github.io/audiojs/docsTANHKS,这是图书馆的文档
【解决方案2】:

如果没有指向 audio.js 库的任何链接,很难知道,但大多数 API 或库都会给出一些指示它们已加载。我会使用 if 语句来创建类似:

(function () {
 function checkForLoaded(){
   if (audiojs.state !== null) { //or something similar
      audiojs.createAll();
   }
 }
})();

【讨论】:

【解决方案3】:

谢谢大家,

我找到了解决办法,

使用 ajax 加载 div 后,我添加了此代码以删除类 audiojs

$("audio").removeClass("audiojs");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-25
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 2019-02-03
    相关资源
    最近更新 更多