2017-07-16 334 views
0

**免责声明:我正在为Web应用程序编写主题文件,该文件不允许我操作应用程序的核心文件,因此我无法更改文件加载顺序DOM。使用jQuery更改img src

我有一个JS文件,允许我将自定义脚本添加到页面。我在jQuery中编码。

我想更改页面上某个元素的图像源。图像的源被加载到页面动态地由核心JS文件,我不能碰,这是我的文件之后加载中...

比方说,HTML是:

<div class ="parent"> 
    <img src="http://example.com/image.jpg"> 
</div> 

当我添加类似下面我jQuery的文档:当我运行这个功能

$(document).ready(function(){ 
    function fixImgSrc(){ 
     var newSrc = 'http://example.com/new-image.jpg'; 
     var image = $('.parent').find('img'); 
     if (image.attr('src') !== newSrc){ 
      image.attr('src', newSrc); 
     } 
    }; 
    fixImgSrc; 
}); 

,因为图像jQuery的加载后返回undefined。我需要在代码中多次执行此操作以更正图像。有时我可以通过运行以下功能来解决此问题:

setTimeout(fixImgSrc(), 500); 

它在加载其他所有内容后运行该功能。其他时候,我能得到这个整个网站的工作的唯一方法是通过执行惨:

setInterval(fixImgSrc(), 500); 

继续检查,如果新源已被采取。

有没有更好的不太俗气的方式来做到这一点?这似乎是一种黑客攻击,而不是“正确”的方式。再加上浏览器的负载剧烈运行一遍又一遍的相同的命令。

回答

1
$(document).ready(function(){ 
FixImgSrc(); 
} 

这将让该文件的准备状态后的功能工作

试试这个

var image = $('.parent').find('img'); 
image.on("load",function(){ 
    if (image.attr('src') !== newSrc){ 
     image.attr('src', newSrc); 
} 
+0

我应该提到的是,作为jQuery,一切都已经包装在$(document).ready()语句中。 –

+0

我更新了答案尝试更新 – Osama

1
$(document).ready(function(){ 
    alert("ready "); 
    FixImgSrc(); 
    } 

我觉得首先你需要检查一下是你的jQuery是工作或不。

+0

一切已经在工作,它已经包装在一个document.ready包装器中 –