用usercript中的jQuery替换图像

时间:2013-11-16 13:36:47

标签: javascript jquery tampermonkey

我目前正在制作用户脚本,但我遇到了问题。 我正在尝试用另一个替换图像。

我以为我可以这样做:

$(".subforumicon.ajax_mark_read").each(function() {
    $(this).html($(this).html().replace(/http:\/\/x\.hackforums\.net\/images\/modern_pl\/minion.gif/g, "http://megaviews.net/hf/designcostumizer/themes/green/minion.png"));
});

然而,这无济于事。当我在javascript控制台中粘贴此代码时,它只显示带有此图片的所有img-tags: Javascript Console

我不想使用$("body").html()替换所有内容,因为这会导致网站出现问题(不知何故)。 在我开始使用jQuery之前,我使用document.body.innerHTML,导致页面出现问题,但是document.getElementById()它有效,所以我不认为这是我的错。 ;)

我对jQuery很新,所以有人可以解释一下为什么上面的代码不起作用吗?

2 个答案:

答案 0 :(得分:0)

它不起作用,因为所选元素是img并且img元素下面没有任何内容..因为.html()选择或设置INSIDE内容(如innerHTML)。不是outerHTML所以你不能通过这种方式访问​​img元素本身的属性。

您应该使用img的src属性,如其他帖子中已提出的那样。

答案 1 :(得分:0)

使用.prop()

您需要$('img'),因为您只更改了图片src

所以只替换img属性src

为什么要遍历所有完整的html,您只需关注src属性。

$('img').prop('src', function (_, old_src) {
    return old_src.replace(/http:\/\/x\.hackforums\.net\/images\/modern_pl\/minion.gif/g, "http://megaviews.net/hf/designcostumizer/themes/green/minion.png");
});

<小时/> 或者更好的是,如果您想要更改所有images属性src

$('img').prop('src','http://x.hackforums.net/images/modern_pl/minion.gif');