Атрибуты JQuery Copy - PullRequest
       10

Атрибуты JQuery Copy

0 голосов
/ 10 ноября 2009

Я погуглил его, но не нашел ничего подобного.

У меня есть 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>

Я загружаю этот iframe в HTML из какого-то php-скрипта, но я не хочу загружать страницу, поэтому я использовал # в качестве источника, теперь, когда я нажимаю кнопку на сайте, он загружает 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(){
    ...
});

Мой вопрос: каков наилучший способ добиться этого? Спасибо.

Ответы [ 2 ]

5 голосов
/ 10 ноября 2009

Если вы не хотите выбирать элемент дважды - кэшируйте его.

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 голос
/ 10 ноября 2009

Я сомневаюсь, что вы можете стать более эффективным, чем это:

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

Примечание: Я использовал slice() вместо substr(), потому что IE не поддерживает отрицательные значения start.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...