2011-03-02 6 views
4

에 나는이 자바 스크립트 기능이 있습니다jQuery - e.preventDefault() 사용법; 자바 스크립트 함수

function putVote(trackid, vote) { 
} 

을하고 나는이 기능 trought 전화 :

<a href="#" onClick="putVote('data1', 'data2')">Link</a> 

내가 putVote()e.preventDefault();를 사용하고 싶습니다,하지만 내가 잘못 생각 해요 몇몇 방법들. 내가 어떻게 해?

건배

+0

당신은 우리에게 * 왜 * 당신이 함수를 사용하고 싶은지 말하지 않았지만 ... 아마도 당신은 jQuery를 사용하여 이벤트 처리기를 하드 코딩하지 않고 속성으로 바인딩하는 것이 더 나을 것이라고 말할 수 있습니다. . – Pointy

+0

이벤트를'putVote'에 전달한 다음'preventDefault()'를 호출 할 수 있습니다. – pimvdb

답변

5

가장 간단한 것은 핸들러에서 함수 (핸들러가 return putVote('data1', 'data2)이 있다면 return falseputVote에서 일 것이다)에서 return false 하는 것입니다.

하지만 Pointy가 말했듯이 jQuery 나 Prototype과 같은 라이브러리/프레임 워크를 사용하면 JavaScript에서 이벤트 핸들러를 쉽게 연결할 수 있습니다.

+0

그래, 알아,하지만 preventDefault를 사용하고 싶습니다 :) – markzzz

+0

@markzzz 왜 preventDefault를 사용하고 싶습니까? – Skilldrick

+0

왜 안돼! :) 좋아, 내가 거짓 반환을 사용합니다. – markzzz

5

가장 쉬운 방법 :

<a href="#" onClick="putVote('data1', 'data2'); return false;">Link</a> 
+0

이전 답변이지만 내가 필요한 정확한 것. 고맙습니다! – Yuschick

5

당신이 jQuery를 사용하는 경우.

JS :

$("#link").click(function(evt) { 
    evt.preventDefault(); 
    putVote('data1', 'data2'); 
}); 

HTML :

<a href="#" id="link">Link</a> 

것은 당신이 jQuery를 최신 버전과 HTML5의 문서 타입을 사용하는 경우.

JS :

$("#link").click(function(evt) { 
    evt.preventDefault(); 
    var $self = $(this); 
    putVote($self.data("one"), $self.data("two")); 
}); 

HTML :

귀하의 경우
<a href="#" id="link" data-one="data1" data-two="data2">Link</a> 
1

, 바인딩 jQuery를-스타일을 사용과 트릭은 당신이에 요소 별 매개 변수를 통과 할 수 있도록하려는 것입니다 handler ("data1", "data2"). 은 "현대"방법은이 될해야 할 일 : 다음

<a href="#" class='data-clickable' data-click-params='["data1", "data2"]'>Link</a> 

하는 "준비"핸들러 (또는 다른 적절한 위치)에, 당신은 당신의 핸들러를 결합하는 것 :

$('a.data-clickable').click(function(e) { 
    var elementData = $(this).data('click-params'); 
    // 
    // ... handle the click ... 
    // 
    e.preventDefault(); 
}); 

"elementData"변수는 "data1"과 "data2"라는 두 개의 값을 가진 배열로 끝납니다 (이 경우 어쨌든). JSON 표기법 값을 "data-foo"속성에 지정할 수 있으며 jQuery ".data()"메소드로 속성을 가져 오면 자동으로 JSON을 디코딩합니다.