2009-11-10 4 views
0

입니다.Jquery의 복사 속성은

나는 약간의 PHP 스크립트에서 HTML에서 그 iframe을로드 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> 

2 개 주 속성 SRC = # 및 링크가 포함 된 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에 f를 복사하는 간단한 코드가 있는지 알고 싶다. 속성을 다른 속성에 추가하거나,이를 수행하는 더 좋은 해결책이있는 경우.

다음과 같이 입력하십시오 : $ ('# myiframe'). attr ('src', attr ('link')));

은 내가 folowing가

$('#myiframe').attr('src', attr('link')); 

작동합니다 알고 있지만 내가 훨씬에 두 번 같은 요소를 선택하지 않을 생각합니다.

(I는 최적화 미치광이 :)의 종류입니다) 또는 당신은 내가 함수 사용할 필요가 있다고 생각 :

$('#myiframe').attr('src', function(){ 
    ... 
}); 

내 질문이를 달성하기 위해 가장 좋은 방법은 무엇입니까. 고맙습니다.

답변

5

요소를 두 번 선택하지 않으려면 캐시하십시오.

var $myiframe = $('#myiframe'); 
$myiframe.attr('src', $myiframe.attr('link')); 

나는 $('#myiframe').attr('src', attr('link')); 이 작동합니다 생각하지 않습니다.

당신은뿐만 아니라 기능을 할 수 있어야한다 :

$('#myiframe').attr('src', function() { 
    return $(this).attr('link'); 
}); 

또한, 보조 노트로 - onclick= 속성을 사용하지 않도록하려고합니다. 난 당신이이보다 더 효율적으로 얻을 수 의심

$('input[type=button][value=load]').click(function() { 
    // One of the solutions above 
}); 
+0

여러 요소에서 작동합니까? 즉 $ ('# myiframe')가 10 세트를 반환하면? 두 번째 해결책은 처음이지만 그렇지 않다고 믿습니다. – Sameer

+0

jquery 문서에서 : .attr() 메서드는 일치하는 집합의 첫 번째 요소에 대해서만 속성 값을 가져옵니다. " –

+1

Sameer - $ ('# myiframe')은 해시가 ID를 나타내므로 ID가 지정된 페이지에서 unqiue 여야하기 때문에 하나의 요소 만 반환해야합니다. 그렇지 않으면 결함있는 html이 있습니다. – Sorcy

1

: : 그냥이 같은 클릭 이벤트에 jQuery를 자신을 결합

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

참고 : IE하지 않는 때문에 slice() 대신 substr()을 사용 부정 start 값을 지원합니다.