代码之家  ›  专栏  ›  技术社区  ›  Radu Maris

Jquery复制属性

  •  0
  • Radu Maris  · 技术社区  · 15 年前

    我用谷歌搜索了一下,但没有找到这样的东西。

    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', function(){
        ...
    });
    

    我的问题是实现这一目标的最佳方式是什么。非常感谢。

    2 回复  |  直到 15 年前
        1
  •  5
  •   Emil Ivanov    15 年前

    如果不想选择元素两次,请缓存它。

    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
    });
    
        2
  •  1
  •   brianpeiris    15 年前

    我怀疑你能比这更有效率:

    var fr = $('#myiframe');
    if (fr.attr('src').slice(-1) === '#') {
      fr.attr('src', fr.attr('link'));
    }
    

    注: 我曾经 slice() 而不是 substr() 因为IE不支持负数 start 价值观