2012-01-07 2 views
0

저는 현재 지금처럼 내 클릭 이벤트를 처리하기에 javscript와 클래스를 사용하고 있습니다 :no-javascript에 대한 href 대안이 있습니까?

<a class="forgotten" href="#">Forgot your password?</a> 

$('.forgotten').click(function(){ 
    location.href = "forgotten.php"; 
    return false; 
}); 

먼저 해당 기능을 평가하는 방법이 있나요 및 자바 스크립트가 비활성화 된 경우 단순히 forgotten.php로 이동?

나는 쉽게 클래스를 제거하고 href에 forgotten.php를 추가 할 수 있지만 내 사이트 중 일부가 손상 될 수 있으므로 jquery 주소를 많이 사용하고 있음을 알고 있습니다. 는 사용자가 자바 스크립트를 사용할 수있는 경우에도 작동하도록

+1

자바 스크립트는 단지'href = "forgotten.php"'에 비해 어떤 이점이 있습니까? –

답변

6

물론, 당신의 마크 업을 설계하여 시작합니다

<a class="forgotten" href="/forgotten.php">Forgot your password?</a> 

을 그리고 당신은 눈에 거슬리지 자바 스크립트를 사용할 수 있습니다 분명히

$(function() { 
    $('.forgotten').click(function(evt) { 
     evt.preventDefault(); 
     window.location.href = "forgotten.php"; 
    }); 
}); 

아마 당신은 원하는 이 javascript .click() 핸들러에서 무언가를 더 하시려면 간단히 forgotten.php으로 리디렉션하는 것 이외의 다른 자바 스크립트 앵커가 이미 있습니다. 예를 들어 진보적 인 향상을 할 수 있습니다. 애니메이션이나 무언가가있는 AJAX 호출처럼.

이제 사용자가 자바 스크립트를 사용하지 않으면 단순히 forgotten.php으로 리디렉션됩니다. 그리고 그가하지 않는다면, 당신의 상상력을 행동으로 옮기십시오.

+2

클릭 이벤트에서'return false' 대신'.preventDefault()'를 사용해야합니다. –

+0

@ 탄두, 좋은 지적, 대답이 업데이트되었습니다. –

+0

훌륭한 조언과 훌륭한 작동합니다! click 이벤트는 jquery 주소 모듈을 만족시키기위한 것이므로 실제로는 아무 일도 일어나지 않을 것입니다. – Paul

0

href로 #을 사용하는 것은 나쁜 습관이며 일을하는 방법이 아닙니다.

#을 forgotten.php로 바꾸면 코드가 원하는대로 정확하게 수행됩니다. JS가 먼저 트리거됩니다.

0

자바 스크립트가 사용 중지 될 수있는 시나리오를 처리하려는 경우 반대 방법을 사용합니다. Javascript가없는 경우와 마찬가지로 HTML 서식을 지정하여 시작하십시오. 그런 다음 자바 스크립트를 사용하여 문서로드 후에 원하는대로 형식을 지정하십시오.

관련 문제