2011-07-11 47 views
0

例如,我有这样的:jQuery的:选择当前所选元素(例如)

<div data-url="http://google.com"> 
    <iframe src=""></iframe> 
</div> 
<div data-url="http://facebook.com"> 
    <iframe src=""></iframe> 
</div> 
<div data-url="http://youtube.com"> 
    <iframe src=""></iframe> 
</div> 

<script> 
$('div iframe').attr('src',$(this).parent().attr('data-url')); 
</script> 

我不想耽误使用jQuery的iframe的加载。我想将iframe的“src”设置为与其父级的“data-url”相同。我怎样才能做到这一点?

或者,有没有另一种方式来延迟加载的iframe,直到一切加载?

+0

没关系,我明白了。原来我不得不使用.each() $('div iframe')。each(function(){ 'data-url')); }); – Linksku

回答

0

这里是你如何对数据网址添加到src:

$('div').each(function(){ 
     $(this).children('iframe').attr('src',$(this).attr('data-url')); 
    }); 
+0

我相信'延迟()'只适用于效果队列。 – alex

+0

是的,我刚刚确认这 – AlienWebguy

1

在你的代码this实际上是窗口的对象。您想要将此代码包装在each方法中。 (另外,注意这个代码不会调用$(this)两次)

$('div iframe').each(function(ev){ 
    var elem = $(this); 
    elem.attr('src', elem.parent().data('url')); 
}); 
+0

,如果这是$(文档).ready(函数(){...})应该工作。另外,你应该使用elem.data('url')而不是attr('data-url')来更加符合现代JQuery。 – ghayes