2014-04-03 29 views
0

我需要將所有img src /products/210x110/foo-bar-foo-front.jpg換成/products/210x110/bar-foo-bar-angle.jpg &將它應用於dom中的每個圖像。如何在使用javascript/jQuery的所有dom圖像的img src中交換一個術語?

我當前的代碼工作,但是從第一個圖像中的DOM應用src網址到所有IMG SRC屬性:

我需要只需更換1個字...

//toggle image angles 
var img = $("div.product-image a img"); 
$('div#image-angle-switch').toggle(function() { 
    $(this).html('<span></span> Angle view ') 
    switch_to_low_fi(); 
}, function() { 
    $(this).html('<span></span> Front view') 
    img.attr("src", img.attr("src").replace("front", "angle")); 
}); 
$('div#image-angle-switch').click(function() { 
    img.attr("src", img.attr("src").replace("toggle")); 
}); 

我可以創建每個img src的數組,交換一個單詞並重新應用到每個img?

var tn_array = $("div.product-image a img").map(function() { 

    return $(this).attr("src"); 
}); 

for (var i=0; i<tn_array.length; i++) { 
    console.log(tn_array[i]); 
} 

得到我的數組,但我應該如何應用它?任何幫助非常感謝。

+0

爲什麼要映射它?只需將它換成點擊即可。 – epascarello

+0

所以不需要數組?它將用第一個img src替換所有圖像,而不是隻替換一個單詞。 –

+0

你使用的是什麼版本的jquery?它顯然是老的,因爲你使用了.toggle –

回答

2

在每個圖像上循環並更改它的src。

$('#image-angle-switch').data("view", "front").click(function() { 
    var $this = $(this); 
    if ($this.data("view") == "front") { 
     $this.html('<span></span> Angle view ').data("view","angle"); 

     // this does the looping 
     $("div.product-image a img").attr("src",function (i, src) { 
      return src.replace("front", "angle"); 
     }); 
    } else { 
     $this.html('<span></span> Front view ').data("view", "front"); 

     // this does the looping 
     $("div.product-image a img").attr("src", function (i, src) { 
      return src.replace("angle", "front"); 
     }); 
    } 
}); 

還替換了舊的折舊切換方法。可以做成烘乾機雖然

+0

只是爲了好奇,讓我問你爲什麼使用'var $ this = $(this);'?我的意思是,可以使用一個變量來存儲'$(this)',但是會稍微關閉以存儲幾乎相同的名字。除了排版,還有什麼與性能有關的? –

+1

這是在這種情況下,一個非常小的優化,但目的是當你不需要不創建一個新的jQuery對象多次。只是我的一種編碼習慣,但我不是一個壞習慣,我得到了 –

+0

- Uncaught TypeError:Object 0沒有方法'replace' –

相關問題