jQuery:用.each()替换字符串

时间:2010-04-22 06:48:20

标签: jquery regex

我想要一个用图像替换每个li的函数。这是我的代码:

$(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
上面的代码不起作用。有什么想法吗?

提前谢谢。

1 个答案:

答案 0 :(得分: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分配了undefined tmphreftmpname的值,因此更改了tmphreftmpname之后的值那不会影响变量str

并且,对于这种情况,您不需要在tmphref函数之外为tmpname.each声明变量。