2014-01-06 2 views
-1

В настоящее время я работаю над пользовательской подпиской для форума, однако он не работает. В форуме есть две темы: я хочу заменить пользовательские панели (расположенные в /groupimages/) из новой темы с темой старой темы.jQuery не выбирает каждое изображение

Я сейчас пытаюсь это:

$("img[src*='/groupimages/']").each(function() { 
    $(this).attr("src", $(this).attr("src").replace("/modern_pl/", "/blackreign/")); 
}); 

/modern_pl/ является каталог новой темы, /blackreign/ из старого. Пример URL-адреса изображения: /images/modern_pl/groupimages/english/strange.gif

Он выбирает несколько фотографий, но не все. Похоже, он внезапно останавливается, не выдавая никаких сообщений об ошибке в Chromes JS-Console. Скажем, strange.gif был 3 раза на странице, он только заменяет его один раз. Некоторые другие изображения (которые должны быть выбраны из-за того, что источник содержит /groupimages/) полностью игнорируются, поэтому я сомневаюсь, что это происходит, потому что одно изображение существует не один раз.

Любые идеи?

+2

вы уверены, присутствуют ли в йот все элементы IMG, когда этот скрипт выполнить –

+0

Возможно использовать 'console.log (это)' в течение каждого цикла, чтобы подсчитать и посмотреть, какие изображения пойманы и которые нет? – codin

+1

Действительно ли '$ (" img [src * = '/ groupimages /'] "). Length' возвращает правильный номер? – epascarello

ответ

4

Для меня сниппет выглядит хорошо.

Вы разместили его внутри функции «Готово»? Если нет, проблема может заключаться в том, что изображения только еще не загружены при запуске скрипта.

Попробуйте это:

$(function(){ 
    $("img[src*='/groupimages/']").each(function() { 
     $(this).attr("src", $(this).attr("src").replace("/modern_pl/", "/blackreign/")); 
    }); 
}); 

UPDATE

Его трудно помочь, когда код, который вы настоящие произведения .. но позволяет предположить, что существует содержимое, загруженное AJAX после страницы загружаются полностью. Вы можете сделать это .. что не приятно на всех .. но если вы не имеете дальнейший доступ к коду на сайте, попробуйте следующее:

setTimeout(function(){ 
    $("img[src*='/groupimages/']").each(function() { 
     $(this).attr("src", $(this).attr("src").replace("/modern_pl/", "/blackreign/")); 
    }); 
},1000); 

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

+0

Он находится внутри функции Document Document, но как-то это не работает. :/ – 1n9i9c7om

+0

Пользовательские скрипты запускаются после того, как документ готов, по умолчанию. –

0

Что-то в этом роде?

var img = $('img'); 
img.attr('src', img.attr('src').replace("\/groupimages\/", "\/modern_pl\/")); 
+0

'img.attr ('src')' будет возвращать только первое изображение src –

Смежные вопросы