jQuery $ ("img [src = the_image_souce]"). attr ('src', 'new_src'); не работает - PullRequest
3 голосов
/ 18 октября 2010

мой код не работает я не знаю почему the_image_source и new_src - просто заполнители, я поместил в них реальные значения

Я также пытался $("img[src=the_image_souce]")[0].attr('src','new_src');, но он тоже не работает, пожалуйста, помогите

Ответы [ 5 ]

16 голосов
/ 18 октября 2010

Вы должны знать, получив доступ к элементу [0] в объекте jQuery, это вернет элемент DOM.Вы не можете использовать метод attQ () jQuery непосредственно для элемента DOM.Он должен быть запущен на объекте 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');

, но это выглядит странно

0 голосов
/ 18 октября 2010

Я бы сделал то, что предлагает WaldenL, и разбил бы его по частям, чтобы выяснить, что именно не работает. Сначала проверьте ваш селектор.

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

если это больше нуля, то ваш селектор хорош. если нет, попробуйте использовать идентификатор тега (если вы его знаете) или каким-либо другим способом получить этот тег изображения.

если селектор хорош, значит что-то не так с установкой атрибута 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);
});
0 голосов
/ 18 октября 2010

Если вы используете относительный путь как image-src, это зависит от браузера, что он будет извлекать как src.Большинство браузеров возвращают абсолютный путь, а не относительный путь, поэтому ваше совпадение не удается.

Вы можете сравнить только конец src:

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

Но если у вас есть больше изображений содно и то же имя файла в разных каталогах, это может привести к неожиданным результатам.Я думаю, что лучший способ - использовать протокол и домен, включающие абсолютный путь, как img-src и jQuery-селекторы.

0 голосов
/ 18 октября 2010

Не даром, но селектор атрибута не написан должным образом.Значение " важно.Для этого вам нужно:

$('img[src="the_image_source"]')
0 голосов
/ 18 октября 2010

Хорошо, какие версии браузера и jQuery?Кроме того, что не работает, селектор, установка атрибута или начало нового изображения?Начнем с простого, что показывает alert ($ ("img [src = imgsrc])]? Также, что говорит firebugs в DOM после запуска этого кода?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...