2010-10-24 5 views
1

У меня есть следующий HTML код:манипуляция DOM: Замена HREF значения с Src значением детским образом

<div class='photoset'> 
<a href="foo-01.html"><img src="foo-01.jpg" /></a> 
<a href="foo-02.html"><img src="foo-02.jpg" /></a> 
<a href="foo-03.html"><img src="foo-03.jpg" /></a> 
<a href="foo-04.html"><img src="foo-04.jpg" /></a> 
</div> 

Я хочу manuipulate в DOM, так что значение ЦСИ каждого изображения заменяет HREF значения родителя чтобы разметка стала такой:

<div class='photoset'> 
<a href="foo-01.jpg"><img src="foo-01.jpg" /></a> 
<a href="foo-02.jpg"><img src="foo-02.jpg" /></a> 
<a href="foo-03.jpg"><img src="foo-03.jpg" /></a> 
<a href="foo-04.jpg"><img src="foo-04.jpg" /></a> 
etc... 
</div> 

Почему бы мне не хотеть этого, спросите вы? Я вынимаю изображения на страницу с использованием API Flickr, но затем хочу использовать плагин jQuery ColorBox для эффекта галереи ... и для этого я считаю, что мне нужно отобразить разметку, созданную Flickr, как указано выше.

Заранее спасибо

Эндрю

ответ

3
$('.photoset a > img').each(function() { 
    this.parentNode.href = this.src; 
}); 

Это перебирает изображений, которые ребенок <a> и содержатся в .photoset, и устанавливает href недвижимость от его parentNode до значения его src.

+1

+1 Это, скорее всего, быстрее, чем версия @Slaks. – Tomalak

+0

@patrick что означает a> img, я работаю в jquery, но я никогда не использовал этот символ, вы можете это объяснить. – kobe

+0

@gov - это [дочерний селектор] (http://api.jquery.com/child-selector/) и является способом ограничения выбора только для прямых дочерних элементов родителя. Здесь не очень важно, так как вложенность не идет глубже, но может повысить эффективность в других случаях. – user113716

2

Как это:

$('a:has(img)').attr('href', function() { 
    return $(this).find('img').attr('href'); 
}); 
+0

+1 Возможно, это не так быстро, как @ patrick's, но это более идиоматический w/r/t jQuery. :) И разница скорости не будет заметна в любом случае. – Tomalak

+0

Я согласен с @Tomalak. Вероятная незаметная разница в производительности в моем ответе может легко взять заднее сиденье в предпочтение стиля кодирования. – user113716

+0

Спасибо SLaks! Ваш вклад очень ценится! – arsmith771