2012-07-09 3 views
0

다음과 같은 jQuery 코드는 아무 것도하지 않는 것 같습니다. 링크를 클릭하면 url 속성의 값을 iframesrc 속성에 복사하려고합니다.jQuery를 사용하여 한 요소의 속성을 다른 요소로 복사

기본적으로 정상 링크처럼 작동하는 대신 iframe에서 링크가 열리도록 설정되어 있습니다 (iframe의 내용은 새 링크를 클릭 할 때마다 바뀝니다).

내 코드가 잘못 되었나요?

$('p.tweet a').click(function(){ 
    var link = $(this).attr('url'); 
    $('iframe').attr('src',link); 
}) 
+0

은'url' 어떤 속성의 :

당신은 또한이 같은 코드 모양 만들고, 기본 동작을 방지해야합니까? 당신은 아마'href'를 의미했습니다, 아마도 ..? 부수적으로,'var link = this.href; '는 잘 작동하고 약간 더 빠르게 동작합니다. –

답변

5

그래서 내 코드 잘못된 것입니다 (기본 동작을 심지어 방지)을 href 속성을 취득 할 수 있습니다?

:

당신은 당신이에 가입함으로써 브라우저가 단순히 다른 곳으로 해당 페이지에서 리디렉션하기 전에 스크립트를 실행 할 기회를 떠나지 않을 앵커의 클릭 핸들러에서 false를 반환하여 기본 동작을 취소하지 않습니다

$(this).attr('url') 대신 $(this).attr('href')을 사용했습니다. href 속성은 표준 HTML의 url 속성보다 앵커에게 좀 더 일반적이지만, 앵커가 url 속성을 갖는 마크 업을 발명 한 경우 스핀을 줄 수 있습니다.

+0

오늘이 편리했습니다. 이것을 공유해 주셔서 감사합니다! – blackhawk

5

어쩌면 당신은

$('p.tweet a').click(function(ev){ 
    ev.preventDefault(); 
    var link = this.href; // no need to call the $ function 
    $('iframe').attr('src',link); 
}) 
+0

아름다운. 'preventDefault()'에 대해 몰랐습니다 - 고마워요! –

0

하이퍼 링크의 URL은 특성이 아닌 href 특성에 포함되어 있습니다.

$('p.tweet a').click(function(event){ 
    var link = $(this).attr('url'); 
    $('iframe').attr('src',link); 
    // cancel default event 
    event.preventDefault(); 
}); 
+0

필자는 iframe에 복사 할 수있을 때까지 가짜 속성에 값을 저장하려고합니다. –

+1

'data-'태그와'data()'함수를 사용하는 것이 좋습니다. – dcpomero

+0

@SamNabi - 그래서 문제가 기본 이벤트를 취소하지 않았다고 가정하고 설정을 모두 마쳤습니다 (업데이트 된 답변입니다. 이미 유용하기 때문에 유용하지는 않습니다.) 말을하는 두 가지 대답). 또한 dcpomero는 정확합니다. 'data-'접두사가없는 사용자 정의 속성을 추가하는 것은 잘못된 HTML입니다 (여전히 올바르게 작동하므로 큰 문제는 아닙니다). – jeff

관련 문제