2017-07-16 275 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包裝器中 –