jQuery $(“img [src = the_image_souce]”)。attr('src','new_src');不起作用

时间:2010-10-18 01:53:49

标签: jquery jquery-selectors

我的代码不起作用我不知道为什么 the_image_source和new_src只是占位符我已经将实际值放在其中

我也尝试了$("img[src=the_image_souce]")[0].attr('src','new_src');,但它也无效,请帮助

5 个答案:

答案 0 :(得分:16)

您必须通过访问jQuery Object中的[0]元素来了解这将返回DOM元素。您不能直接在DOM元素上使用jQuery attr()方法。它必须在jQuery对象上运行

基本上,如果您有多个与下一个选择器匹配的元素,并且您想要访问第一个匹配的元素$("img[src='http://domain.com/image.jpg]"),那么您应该使用.first().eq()。实施例

$("img[src='http://domain.com/image.jpg']").first().attr('src','http://domain.com/newimage.jpg')

$("img[src='http://domain.com/image.jpg']").eq(0).attr('src','http://domain.com/newimage.jpg')

$($("img[src='http://domain.com/image.jpg']")[0]).attr('src','http://domain.com/newimage.jpg');

但这看起来很奇怪

答案 1 :(得分:0)

好的,浏览器和jQuery版本是什么?什么不起作用,选择器,设置属性或引导新图像?从简单开始,alert($(“img [src = imgsrc])]告诉你什么?在代码运行之后,firebugs在DOM中说了什么?

答案 2 :(得分:0)

不是没有,但属性选择器没有正确写入。 "很重要。因此,你需要:

$('img[src="the_image_source"]')

答案 3 :(得分:0)

如果你使用相对路径作为image-src,它取决于浏览器,他将检索什么作为src。大多数浏览器将返回绝对路径,而不是相对路径,因此您的匹配失败。

您只能比较src的结尾:

$("img[src$='the_image_source']").attr('src','new_src');

但是如果在不同目录中有更多具有相同文件名的图像,则可能会导致意外结果。我认为最好的方法是始终使用绝对路径包含协议& domain as img-src和jQuery-selectors。

答案 4 :(得分:0)

我会做WaldenL建议的事情并逐一分解,以找出究竟什么不起作用。首先检查您的选择器。

alert($("img[src=the_image_source]").length);

如果大于零,那么你的选择器就好了。如果没有,那么尝试使用标签的id(如果你知道的话)或其他获取该图片标签的方式。

如果选择器好,那么设置src属性有问题。确保new_src的值是有效的,并且你没有做一些愚蠢的事情,比如在你的变量或拼写错误上加上引号:

var the_image_source = "http://mysite/images/img01.gif";
var new_src = "http://mysite/images/img02.gif";
$('img[src=the_image_souce]').attr('src','new_src'); // won't work - first variable is missing the "r" and not formatted correctly and attr setter has parenthesis
$('img[src=' + the_image_source + ']').attr('src',new_src); // should work

另外,请确保将其放在文档就绪功能中。

$(document).ready(function() {
    var the_image_source = "http://mysite/images/img01.gif";
    var new_src = "http://mysite/images/img02.gif";
    $('img[src=' + the_image_source + ']').attr('src',new_src);
});