2010-05-12 4 views
3

동적 HTML에 의해 요소가 생성되었으므로 많은 함수 중 하나가 호출 할 때 함수를 호출하는 특정 href를 참조하고 싶습니다.함수에서 참조하는 (this)

<a href="javascript:Foo(this)">Link</a> 

$ (this)를 참조하려고하면 작동하지 않습니다. 이 작업을 수행하는 또 다른 방법이 있습니까? 아니면 동적 ID를 만들어야합니까?

+0

'$ (this)'를 어디에서 어떻게 참조 할 수 있습니까? –

답변

5

<a href="javascript:Foo(this.href)">Link</a>은 href를 전달하려는 경우 작동합니다.

그러나 HTML 코드의 onsomething 처리기는 jqueryish가 아닙니다. javascript: 의사 프로토콜 핸들러를 사용하여에

$('.mylink').live('click', function() { 
    // do whatever you want with this or $(this) or this.href or $(this).attr('href') 
}); 
+0

왜 jQuery를 꼭 필요하지 않은 방정식으로 가져 옵니까? 이것은 바닐라 자바 ​​스크립트를 사용하는 것보다 훨씬 쉽고 이해하기 쉽습니다. –

+0

@Sean Kinsey가 OP를 요청합니다 ... OP 태그 jQuery, 무엇을 기대합니까? ... : p – Reigel

+0

OP가 OPTI를 더 잘 알지 못할 것으로 기대합니다 (이 경우 jQuery가 필요하다고 가정하는 것보다). 누가 대답을 더 잘하는지. –

-1

없음 점 : 클래스와 설정을 라이브 핸들러를 당신의 연결을 지정 .

<a href="#" onclick="Foo(this);">Link</a> 

대신
사용.

1

href 속성에 js 부품을 넣는 것은 좋지 않은 아이디어입니다. 가장 좋은 방법은 addEventListener과 함께 처리기를 추가하는 것입니다. 여기서는 onclick을 직접 설정할 수 있습니다.

<a href="#" onclick="Foo(event);">Link</a> 

과 기능은 사용자가 링크를 클릭하면 그래서, Foo이 paremeter으로 이벤트를 호출합니다

function Foo(e) { 

    var a = e.target || e.srcElement; 

    // TODO: stuff 

    if (e.preventDefault) { 
     e.preventDefault(); 
    } 
    else { 
     return false; 
    } 
} 

처럼 될 것입니다. 이벤트 객체는 표준 브라우저에서 target 또는 IE에서 srcElement으로 소스 요소에 대한 참조를가집니다. 끝에 preventDefault/return false; 콤보는 브라우저가 #에 대한 링크를 "따라가는"것을 방지합니다.

편집 : 두 번째 생각에 많은 링크가 있기 때문에 jquery를 사용하여 핸들러를 추가하는 것이 좋습니다. 첫 번째 해결 방법은 여전히 ​​좋지만 권장되는 방법이 좋습니다.

... 
<a id="A5" href="#" >Link</a> 
<a id="A6" href="#" >Link</a> 
<a id="A7" href="#" >Link</a> 
... 

<script> 
$('a').click(Foo); 
</script> 
관련 문제