2013-12-09 97 views
1

原谅我缺乏知识,但我对JS相当陌生。我在网站上显示Instagram供稿,并需要将图像的标题属性插入到包装链接中以将其显示为灯箱标题。 我的解决方案到目前为止工作,但问题是,第一个图像的标题插入到每个链接,而不是只是包装链接。jQuery - 从元素中获取属性,将其插入到另一个元素中并重复

脚本:

function(){ 
    $('#instapics a').lightBox(); 
    jQuery('#instapics a img').each(function() { 
     $('#instapics a').attr('title', $(this).attr('title')); 
    }); 
} 

的HTML:

<div id="instapics"> 
    <a href="#"> 
    <img title="IMG title 1" src="xxx"> 
    </a> 
    <a href="#"> 
    <img title="IMG title 2" src="xxx"> 
    </a> 
    ... 
</div> 

这将插入 “IMG标题2” 到这两个环节。但我需要第一个“IMG标题1”,第二个需要“IMG标题2”,第三个需要“IMG标题3”等。我错过了什么?

我期待着一些有用的提示。

回答

4
jQuery('#instapics a img').each(function() { 
    $(this).parent().attr('title', $(this).attr('title')); 
}); // add it to the parent of img which is a 

您还可以使用this.title代替jQuery的$(this).attr('title')

+0

这解决了它马上。 “this”,而不是重新选择所有的链接。谢谢 – jastone

1

这是因为你正在选择所有的锚而不是你正在处理的锚。

$('#instapics a').attr(

必须

$(this).attr(

,你或许应该使用prop()代替attr()

+0

为什么'.prop()'?这不是用户可更改的属性。 – Blazemonger

0

您可以使用此代码:

$("#instapics a").attr("title", function() { //Will loop in every a's 
    return $(this).find('img').attr('title'); //Return img title to change the a title. 
}); 

Fiddle

相关问题