2013-02-14 2 views
3

응답을 보내기 전에 처리하는 데 몇 초가 걸리는 링크가 몇 개 있습니다. 따라서 표시 아이콘을 구현하고 싶습니다.링크 (앵커 태그)에서 "클릭 가능성"제거

<a href="/foo"><img src="icon.png" /></a> 

그것은 레거시 응용 프로그램, 그리고 코드가 이미 엉망이다, 그래서 난 마음과 인라인 이벤트 핸들러를 사용하지 마십시오 : 여기 내 출발점 또한

<a href="/foo"><img src="icon.png" onclick="indicate(this)" /></a> 

을 더 JS는 프로그래머 없다 프레임 워크가 묶여 있습니다. 다른 메 커닉을 사용하여 이벤트 핸들러를 적용 할 수는 있지만 해결하려고하는 문제는 변경되지 않습니다.

백엔드 처리는 많은 리소스를 소비하므로 사용자가 여러 번 클릭하지 못하도록하고 싶습니다. 첫 번째 클릭시 href 속성을 제거하려고했습니다. 요청을 보낸 후 href가 올바르게 제거 된 시간 초과를 사용하여 firefox와 IE9에서 링크를 다시 클릭 할 수 있습니다. 여기

는 표시() 함수입니다 :

function indicate(e) { 
    if (indicator.ref.nodeName) indicateStop(); 

    // save state 
    indicator.ref = e; 
    indicator.orig.href = indicator.ref.parentNode.href; 
    indicator.orig.src = indicator.ref.src; 

    // replace icon 
    indicator.ref.src = indicator.src; 

    // remove href 
    setTimeout(function(){ indicator.ref.parentNode.removeAttribute("href"); }, 20); 
} 

그래서, 어떻게 그것을 클릭하여 링크 (앵커)에서 "클릭 가능"을 제거 할 수있는 질문? 이 코드

+0

클릭 이벤트 처리기에서 false를 반환 해 보셨습니까? 그게 내가해야 할 일이야. – ldionmarcil

+1

기본 이벤트 ['event.preventDefault'] (https://developer.mozilla.org/en-US/docs/DOM/event.preventDefault)를 비활성화하고 직접 처리하십시오 (커서 모양을' 링크를 비활성화 할 때 '기본'으로 설정). – steveax

+0

@steveax 그렇다면 앵커 타겟 조회를 직접 처리해야한다는 의미입니까? - 또한 커서가 이미 바뀌었고 두 번째 클릭시 href가 더 이상 설정되지 않았습니다. – codecab

답변

0

당신은 링크를 여는 앵커를 중지 할 수 있습니다

$('a').on('click', function(e){ 
    e.preventDefault(); 
}); 
+0

입니다. OP가 바닐라를 사용하는 것 같습니다. – Popnoodles

+0

당신은 그것을보기 좋게 고치기 만하면됩니다 : P –

+0

여전히 jQuery와 닮았습니다! – Popnoodles

-1
<a id="indicate" href="/foo"><img src="icon.png" /></a> 

document.getElementById('indicate').addEventListener('click', indicate, false); 

function indicate(e) { 
    e.preventDefault(); 
} 

어떤 사람들은 때때로 잘되는, false를 반환하지만 항상 좋은 생각 사용할 말할 것이다. event.preventDefault() vs. return false

+0

제 경우에는 실제로 e가 클릭 된 요소입니다. 따라서 e.preventDefault()가 없습니다 – codecab

+0

아, 아마도 ... – Popnoodles

+0

... 이제 끝납니다 – Popnoodles

관련 문제