2011-04-09 5 views
0

Я просто пытаюсь написать код, для каждого элемента определенного класса мне нужно найти определенный атрибут, а затем заменить элемент. код я щас выглядит следующим образом:help с .each.replaceWith() jQuery

<div class="a-photo" alt="*/THE IMG SRC*/"></div> 
<div class="a-photo" alt="*/THE IMG SRC*/"></div> 
<div class="a-photo" alt="*/THE IMG SRC*/"></div> 
<div class="a-photo" alt="*/THE IMG SRC*/"></div> 

$('.a-photo').each().replaceWith(function(){ 
var hash = $(this).attr('alt') 
"<div class='a-photo' style='background:url("+ hash +") center no-repeat;></div>" 
}); 

я знаю, что это не так, и он не работает, но я не могу думать о том, как написать это, любая помощь будет принята с благодарностью!

РЕДАКТИРОВАТЬ

Следует отметить, что количество элементов не является предопределенным.

+0

Вы интерполируете несуществующую переменную 'alt' - вы уверены, что не имеете в виду' хэш'? – Cameron

+0

кричит, да, дайте мне исправить это, это не проблема, jsut опечатка. – mcbeav

ответ

2

Я думаю, что вы хотите следующее:

$('.a-photo').each()(function(){ 
    $(this).css({'background':'url('+$(this).attr('alt') + ') center no-repeat'}); 
}); 
+1

"url" требует скобок. – lukiffer

+0

hahah yeah, я просто сделал это прямо перед тем, как получил ответ, благодаря кучу за помощь! – mcbeav

+0

да, я забыл – gor

1

Вы используете each().replaceWith, которая является ошибкой, а также излишним Becaue replaceWith уже делает то же самое. Попробуйте:

$('.a-photo').replaceWith(function(){ 
    var alt = $(this).attr('alt'); 
    return "<div class='a-photo' style='background:url("+ alt +") center no-repeat;></div>"; 
});