2010-04-22 120 views
2

我想要一個函數,用圖像替換每個li。這是我的代碼:jQuery:替換字符串.each()

$(document).ready(function(){ 
    var tmphref; 
    var tmpname; 
    var str = '<a href="' + tmphref + '"><img src="http://www.somesite.com/a/' + tmpname[1] + '/avatar-small.jpg /></a>'; 
    $('#somediv li a').each(function(){ 
     tmphref = $(this).attr("href"); 
     tmpname = /http\:\/\/(\w+)\.somesite\.com\//.exec(tmphref); 
     $(this).parent().replaceWith(str); 
    }); 
}); 

的圖像是在這個特定的路徑:www.somesite.com/a/username/avatar-small.jpg
上面的代碼不起作用。有任何想法嗎?

預先感謝您。

回答

4

移動

var str = '<a href="' + tmphref + '"><img src="http://www.somesite.com/a/' + tmpname[1] + '/avatar-small.jpg /></a>'; 

tmphreftmpname,像在此之後

$('#somediv li a').each(function(){ 
    tmphref = $(this).attr("href"); 
    tmpname = /http\:\/\/(\w+)\.somesite\.com\//.exec(tmphref); 
    var str = '<a href="' + tmphref + '"><img src="http://www.somesite.com/a/' + tmpname[1] + '/avatar-small.jpg /></a>'; 
    $(this).parent().replaceWith(str); 
}); 

因爲可變str已經與undefinedtmphref,和tmpname,所以改變tmphreftmpname值之後分配的值,不會影響變量str

而且,對於那種情況,您不需要聲明變量tmphreftmpname外部的.each函數。

+0

準確地說 - 您正在設置兩個變量_after_您正在使用它們。 :) – Damovisa 2010-04-22 06:54:02

+0

這在我的腦海裏浮現出來,但是不是說每一個li都有一個新的變量嗎? (它有var關鍵字) – Warrantica 2010-04-22 13:43:11

+0

Warrantica,你的'tmphref'基於每個循環,所以它需要在內部完成。 – YOU 2010-04-22 15:08:02