[javascript] ‘#’링크 클릭이 페이지 상단으로 이동하지 못하게하는 방법은 무엇입니까?

현재 <a>jQuery와 함께 태그를 사용하여 클릭 이벤트 등을 시작하고 있습니다.

예는 <a href="#" class="someclass">Text</a>

그러나 ‘#’이 페이지를 페이지 상단으로 이동시키는 방식이 싫습니다. 대신 무엇을 할 수 있습니까?



답변

jQuery에서 클릭 이벤트를 처리하면 링크가 일반적인 방식으로 응답하지 않도록하려면 false를 리턴하십시오.href속성 을 방문하는 기본 조치가 발생하지 않도록하십시오 (PoweRoy의 의견 및 Erik의 답변에 따라 ).

$('a.someclass').click(function(e)
{
    // Special stuff to do when this link is clicked...

    // Cancel the default action
    e.preventDefault();
});


답변

그래서 이것은 오래되었지만 … 누군가가 검색에서 이것을 찾은 경우를 대비하여.

"#/"대신에 사용 "#"하면 페이지가 이동하지 않습니다.


답변

다음과 같이 작성할 수도 있습니다.

<a href="javascript:void(0);"></a>

더 나은 방법은 모르겠지만 방법입니다 🙂


답변

해결책 # 1 : (일반)

<a href="#!" class="someclass">Text</a>

해결책 # 2 : (필요 javascript)

<a href="javascript:void(0);" class="someclass">Text</a>

솔루션 # 3 : (필요 jQuery)

<a href="#" class="someclass">Text</a>
<script>
$('a.someclass').click(function(e) {
    e.preventDefault();
});
</script>


답변

event.preventDefault()이것을 피하기 위해 사용할 수 있습니다 . 자세한 내용은 http://api.jquery.com/event.preventDefault/를 참조하십시오 .


답변

그냥 사용하는 <input type="button" />대신 <a>원하는 경우 링크처럼 보이도록 스타일을과 CSS를 사용.

버튼은 클릭을 위해 특별히 만들어졌으며 href 속성이 필요하지 않습니다.

가장 좋은 방법은 onload 액션을 사용하여 버튼을 만들고 javascript를 통해 필요한 곳에 추가하는 것이므로 javascript를 비활성화하면 전혀 표시되지 않으며 사용자를 혼동하지 않습니다.

사용 href="#"하면 에이전트가 JavaScript를 지원하지 않는 경우 동일한 위치를 가리키는 수많은 다른 링크가 표시됩니다.


답변

앵커를 사용하려면 제안 된 다른 답변과 같이 http://api.jquery.com/event.preventDefault/ 를 사용할 수 있습니다 .

범위와 같은 다른 요소를 사용하고 클릭 이벤트를 해당 요소에 첨부 할 수도 있습니다.

$("span.clickable").click(function(){
alert('Yeah I was clicked');
});