[javascript] 태그의 onclick 속성에서 발생하는 사용자 정의 함수에서 preventdefault를 호출하는 액세스 이벤트

다음과 같은 링크가 있습니다.

<a href="#" onclick="myfunc({a:1, b:'hi'})" />click</a>
<a href="#" onclick="myfunc({a:3, b:'jo'})" />click</a>

그리고 나는 링크를 클릭 할 때 주소 표시 줄에 추가 되기 때문에 preventDefault()내부 작업을하고 싶습니다 ( 또는 하지 않음 )myfunc()#return false;href='javascript:void(0);'

이게 가능해? 이벤트를 내부로 가져올 수 있습니까?myfunc()



답변

W3C 호환 브라우저에서 발생한 이벤트 eventevent개체 가 될 함수를 인라인으로 전달할 수 있다고 생각 합니다 (예 : IE의 이전 버전은 여전히 ​​이벤트 처리기 함수 내부에서 검색해야합니다 window.event).

간단한 예 .

function sayHi(e) {
   e.preventDefault();
   alert("hi");
}
<a href="http://google.co.uk" onclick="sayHi(event);">Click to say Hi</a>

  1. 있는 그대로 실행하고 경고 후 링크가 Google로 리디렉션되지 않는지 확인합니다.
  2. 그런 다음 핸들러에 event전달 된 onclick것을 다른 것으로 변경하고 e실행을 클릭 한 다음 경고 후 리디렉션이 발생하는지 확인합니다 (결과 창이 흰색 으로 바뀌고 리디렉션을 보여줍니다).

답변

가장 간단한 해결책은 다음과 같습니다.

<a href="#" onclick="event.preventDefault(); myfunc({a:1, b:'hi'});" />click</a>

실제로 JS 지원 브라우저가없는 경우 폴 백이있는 문서에 대해 캐시 무효화를 수행하는 좋은 방법입니다 (JS가없는 경우 캐시 무효화 없음).

<a onclick="
if(event.preventDefault) event.preventDefault(); else event.returnValue = false;
window.location = 'http://www.domain.com/docs/thingy.pdf?cachebuster=' +
Math.round(new Date().getTime() / 1000);"
href="http://www.domain.com/docs/thingy.pdf">

JavaScript가 활성화 된 경우 캐시 무효화 쿼리 문자열이있는 PDF를 엽니 다. 그렇지 않으면 PDF 만 엽니 다.


답변

이 시도:

<script>
    $("a").click(function(event) {
        event.preventDefault();
    });
</script>


답변

<script type="text/javascript">
$('a').click(function(){
   return false;
});
<script>


답변

링크에 고유 한 클래스를 추가하고이 클래스가있는 링크의 기본값을 방지하는 자바 스크립트를 추가합니다.

<a href="#" class="prevent-default"
   onclick="$('.comment .hidden').toggle();">Show comments</a>

<script>
  $(document).ready(function(){

    $("a.prevent-default").click(function(event) {
         event.preventDefault();
          });
  });
</script>


답변

a 태그에서 href 속성을 제거 할 수 없습니까?


답변

우리가 onClick을 사용할 때 우리는 기본값과 다른 것을 원한다고 생각합니다. 따라서 onClick을 사용하는 모든 링크에 대해 :

$("a[onClick]").on("click", function(e) {
  return e.preventDefault();
});