2012-01-17 17 views
3

我有一個圖像,當點擊我想改變,然後讓瀏覽器跳轉到一個新的URL。我正在使用.one,以便用戶只能單擊一次圖像。jQuery - 爲什麼不attr.src更改?

 jQuery('#launch_button').one('click', function() { 
     jQuery("#launch_button").attr("src", "images/button_launch2_grey.png"); 
     window.location.href = 'test.html'; 
    }); 

如果我註釋掉window.location.href圖像正確更改。如果我做相反的事情,並且註釋掉attr,那麼window.location.href可以工作,但圖像不會先改變。在執行window.location.href之前,如何獲得第一行(attr變更)以完成/工作?

+0

您在圖像加載之前離開頁面。您可以嘗試設置超時時間,但是您不知道超時時間是否足夠加載圖像。你可以嘗試一種不同的方法 - 創建一個'img',並且只有在它加載之後,爲重定向設置超時。 – bububaba 2012-01-17 09:46:05

+0

謝謝,settimeout工作,它允許圖像改變,然後location.href將去。 test.html需要10秒來加載,爲什麼我想要圖像的變化和什麼。 – 2012-01-17 19:23:45

回答

2

當您運行window.location.href您的更改用戶正在查看的頁面。

您對DOM所做的更改只會保留當前頁面;只要用戶導航,更改將丟失。

重定向到test.html應該是臨近瞬間。圖像必須在渲染之前加載。您應該將圖像包含在DOM中隱藏的<img />標記上,以確保它在顯示之前加載(或通過構建new Image()並將其設置爲src用JavaScript中的圖像預加載);但即使如此,你也只能在短時間內看到它。

+0

如何使用jQuery將attr.src更改爲已經預載的圖像? 例如,這是否構成一個預加載圖像?:

如果是的話,我該如何使用它來顯示它? jQuery(「#launch_button」)。attr(「src」,???); – 2012-01-17 19:15:57

+0

@Ken:是的,這是預加載圖像。你所需要做的就是將'src'屬性設置爲圖像URL。這是有效的,因爲'button_launch2_grey.png'圖像已經被隱藏的圖像加載;所以不需要再次加載。 – Matt 2012-01-17 19:51:39

相關問題