我谷歌了,但没有找到这样的东西。
我的iframe有2个主要属性src =#和link = http://somesite.com
<iframe id="myiframe" src="#" link="https://somesite.com?id=x&anotherid=y" style="position:absolute; left:0px; top:0px; width:99%; min-width:80%; height:99%; min-height:80%; padding:0px;"></iframe>
我从某些PHP脚本加载HTML中的iframe,但我不想加载页面,这就是我使用#作为源的原因,现在当我点击网站上的按钮时,它将加载iframe(如果不是从上一次点击加载,我的临时解决方案是:
<input type="button" value="load" onClick="var fr = document.getElementById('myiframe');if(fr.src.substr(-1)=='#'){fr.src=document.fr.getAttribute('link')};" />
现在我有一点时间来实现jQuery,我想知道jQuery中是否有一些简单的代码可以从属性复制到另一个属性,或者是否有更好的解决方案来实现这一点。
这样的事情: $('#myiframe')。attr('src',attr('link'));
我知道下面的内容会有效吗
$('#myiframe').attr('src', attr('link'));
但我认为选择相同的元素两次并不多。 (我是一个优化者疯子:))
或者你认为我必须使用一个函数:
$('#myiframe').attr('src', function(){
...
});
我的问题是实现这一目标的最佳方法是什么。谢谢。
答案 0 :(得分:5)
如果您不想两次选择元素 - 请将其缓存。
var $myiframe = $('#myiframe');
$myiframe.attr('src', $myiframe.attr('link'));
我认为 不起作用。$('#myiframe').attr('src', attr('link'));
您也应该能够使用某个功能:
$('#myiframe').attr('src', function () {
return $(this).attr('link');
});
另外,作为旁注 - 尽量避免使用onclick=
属性。只需将jQuery绑定到click事件,如下所示:
$('input[type=button][value=load]').click(function () {
// One of the solutions above
});
答案 1 :(得分:1)
我怀疑你能比这更有效率:
var fr = $('#myiframe');
if (fr.attr('src').slice(-1) === '#') {
fr.attr('src', fr.attr('link'));
}
注意:我使用slice()
代替substr()
,因为IE不支持负start
值。