앵커 링크를 클릭 할 수 없거나 비활성화하려면 어떻게해야합니까?


92

사용자가 클릭하면 비활성화하려는 앵커 링크가 있습니다. 또는 텍스트 주위에서 앵커 태그를 제거하되 텍스트는 유지하십시오.

<a href='' id='ThisLink'>some text</a>

.attr("disabled", "disabled");
비활성화 된 속성을 성공적으로 추가했지만 링크를 클릭 할 수 있음을 추가하여 버튼으로 쉽게이 작업을 수행 할 수 있습니다 .
텍스트에 밑줄이 있든 없든 상관하지 않습니다.

단서가 있습니까?

잘못된 뮤지션을 클릭하면 "Wrong"을 추가 한 다음 클릭 할 수 없게됩니다.
클릭하고 정확하면 "Awesome"을 추가 한 다음 모든 <a>태그 를 비활성화해야 합니다.


href 부분을 제거하고 CSS에 추가하십시오 : "cursor : pointer", $ ( '# ThisLink'). click 또는 이와 유사한 것이 있다고 가정합니다.
Book Of Zeus

1
$ ( "# ThisLink"). parent (). find ( "a"). remove ();
Adam Holmes

Adam,이 솔루션은 거의 작동합니다. 그래도 a 태그 내의 모든 텍스트를 제거합니다.
Evik James 2011 년

답변:


12

나는 당신이 무엇을 요구하고 있는지 깨달았습니다. 추악한 해결책이 있습니다.

var preventClick = false;

$('#ThisLink').click(function(e) {
    $(this)
       .css('cursor', 'default')
       .css('text-decoration', 'none')

    if (!preventClick) {
        $(this).html($(this).html() + ' lalala');
    }

    preventClick = true;

    return false;
});

이것은 실제로 문제를 해결할 수 있습니다. 일종의 ... .click 대신 .on을 본문에 사용하고 'a [disabled]'에 위임합니다. 그런 다음 동일한 선택기를 사용하여 실제 CSS에 CSS 코드를 넣습니다. 그런 다음 클릭 방지는 event.preventDefault ()만큼 간단하고 false를 반환합니다.
lassombra

2
동의하지 않습니다. CSS "pointer-events : none;"을 사용합니다. 대신, 다른 unswers와 마찬가지로.
vitrilo

200

가장 깨끗한 방법은 클릭을 비활성화하고 싶을 때 pointer-events : none 클래스를 추가하는 것입니다. 일반 라벨처럼 작동합니다.

.disableClick{
    pointer-events: none;
}

19
이 아이디어를 사용하면 더 쉬운 방법은 a [disabled]를 css에 대한 선택기로 사용하는 것이므로 .disableClick 클래스를 앵커에 추가 할 필요가 없습니다
Ferran Salguero

15
없음 : 당신은 여전히 일에 대한 탭 포인터 이벤트와 함께 사용할 수 있지만주의
마이크 멜러

이 솔루션은 최신 브라우저에서 나에게 좋습니다. 클릭 이벤트에 바인딩 된 사용 가능한 앵커 태그가 있으며 프로세스가 작업을 수행 할 때 스팸을 방지하기 위해 프로그래밍 방식으로 추가 한 다음 프로세스가 완료되면 제거합니다. 제 경우에는 비활성화 된 앵커 태그를 탭하는 것도 문제가되지 않지만 다른 사람들에게는 해당 될 수 있습니다. YMMV
Stephen Tetreault

2
을 사용 pointer-events:none하면 cursor, 제목 텍스트 및 기타 마우스 오버 이벤트 도 비활성화 됩니다.
Keith

none 값은 마우스 이벤트가 요소를 "통과"하고 대신 해당 요소 "아래"에있는 항목을 대상으로 지정하도록 지시합니다. developer.mozilla.org/en-US/docs/Web/CSS/pointer-events 일부 레이아웃에서 문제가 될 수 있습니다
user2988142

33
<a href='javascript:void(0);'>some text</a>

8
이 질문에 대한 향후 방문자가 당면한 문제를 해결하는 방법을 이해할 수 있도록 솔루션을 설명하십시오.
War10ck 2014

3
보낸 사람 : MDN : 무효 연산자 . 브라우저가를 따르는 javascript: URI경우 URI의 코드를 평가 한 다음 반환 된 값이이 아닌 경우 페이지의 내용을 반환 된 값으로 바꿉니다 undefined. void연산자 복귀하는데 사용될 수있다 undefined. 예를 들면 다음과 같습니다. <a href="javascript:void(0);"> Click here to do nothing </a> 그러나 javascript:의사 프로토콜은 눈에 거슬리지 않는 이벤트 핸들러와 같은 다른 대안보다 권장되지 않습니다.
Lenin

28

포인터 이벤트 CSS 스타일을 사용하십시오 . (Jason MacDonald가 제안했듯이)

MDN https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events를 참조 하십시오 . 대부분의 브라우저에서 지원됩니다.

다음과 같은 전역 CSS 규칙이있는 경우 앵커에 "disabled"속성을 간단히 추가하면됩니다.

a[disabled], a[disabled]:hover {
   pointer-events: none;
   color: #e1e1e1;
}

3
+1은 클래스가 아닌 [disabled] 속성을 통해 스타일을 추가합니다. 포인터 이벤트 : 없음; 그래도 IE11 이전 버전에서는 작동하지 않습니다.
Daniel Tonon

모든 IE에는 기본적으로 앵커, 버튼 및 기타 요소를 비활성화하는 고유 한 논리가 있습니다.이 해결 방법은 IE가 아닌 브라우저에 필요합니다.
vitrilo

3
+1. 다음 번에 다시 찾을 필요가 없습니다. 필요한 자바 스크립트 (jQuery 사용)는 $("#elementid").attr("disabled", "disabled");. 또한 cursor: defaultCSS 에 포함하는 것이 도움이 될 수 있습니다 (Muhammad Nasir가 제안한대로).
ASL

요소에는 비활성화 된 속성이 없으므로 선택기로 사용할 수도 있고 작동하지 않을 수도 있습니다.
RobG

1
직관적-좋은 솔루션. <a />요소에 비활성화 된 속성이 없다는 사실에 놀랐습니다 . 이상하게 보입니다.
Morvael

12
$('a').removeAttr('href')

또는

$('a').click(function(){ return false})

상황에 따라 다름


removeAttr을 통해 a를 제거해도 작동하지 않습니다. .removeAttr ( "href") awesomealbums.info/?WhoAmI
Evik James

10

부트 스트랩은 우리에게 .disabled수업을 제공합니다 . 이용하십시오.

그러나 .disabledclass는 'a'태그에 이미 'btn'클래스가있는 경우에만 작동합니다. 이전 'a'태그에서는 작동하지 않습니다. 이 btn클래스는 스타일 의미가 있기 때문에 어떤 상황에서는 적절하지 않을 수 있습니다. 커버 아래에 .disabled클래스 세트 pointer-events하는 noneSaroj 아얄 및 Vitrilo이 sugested 것처럼, 그래서 당신은 같은 일을 할 수있는 CSS를 만들 수 있습니다. (이 조언에 대해 Les Nightingill에게 감사드립니다).


3
.disabled 클래스는 'a'태그에 이미 'btn'클래스가있는 경우에만 작동합니다. 이전 'a'태그에서는 작동하지 않습니다. 'btn'클래스는 스타일 의미가 있으므로 일부 컨텍스트에서는 적절하지 않을 수 있습니다. 내부적으로 .disabled 클래스는 포인터 이벤트를 none으로 설정하므로 Saroj Aryal 및 Vitrilo가 섭취 한 것과 동일한 작업을 수행하도록 CSS를 만들 수 있습니다.
Les Nightingill

자세한 의견을 보내 주셔서 감사합니다. 많은 사용자에게 많은 것을 명확히합니다. 답변을 연장하기 위해 귀하의 의견에있는 텍스트를 사용할 수 있습니까?
예브게니 Afanasyev

9

css수업 추가 :

.disable_a_href{
    pointer-events: none;
}

이것을 추가하십시오 jquery:

$("#ThisLink").addClass("disable_a_href"); 

5

href앵커 태그에서 속성을 제거하기 만하면 됩니다.


2
일부 브라우저에서 href를 제거하면 href가 / 또는 현재 페이지로 설정됩니다.
다항식

나는 이것이 첫 번째 접근해야한다고 생각
바스 Slagter

5

가장 좋은 방법은 기본 작업을 방지하는 것입니다. 앵커 태그의 경우 기본 동작은 href지정된 주소 로 리디렉션됩니다 .

따라서 다음 자바 스크립트는 상황에서 가장 잘 작동합니다.

$('#ThisLink').click(function(e)
{
    e.preventDefault();
});

4

onclick 이벤트를 사용하여 클릭 동작을 비활성화 할 수 있습니다.

<a href='' id='ThisLink' onclick='return false'>some text</a>

또는 <a>태그 이외의 것을 사용할 수도 있습니다 .


당신은 이것을 결합 할 수 있습니다 text-decoration: none그리고 .disabledLink { color: #000 !important; }그것은 일반 텍스트처럼 보이도록.
다항식

1
눈에 띄는 자바 스크립트는 끔찍한 솔루션입니다.
jahrichie dec.

4

Jason MacDonald 댓글이 저에게 효과적이며 Chrome, Mozila 및 IE에서 테스트되었습니다.

비활성화 효과를 보여주는 회색을 추가했습니다.

.disable_a_href{
    pointer-events: none;
    **color:#c0c0c0 !important;**
}

Jquery는 앵커 목록에서 첫 번째 요소 만 선택하고 메타 문자 (*)를 추가하여 id 인 모든 요소를 ​​선택 및 비활성화했습니다 #ThisLink.

$("#ThisLink*").addClass("disable_a_href"); 

4

한 줄의 jQuery 코드 작성

$('.hyperlink').css('pointer-events','none');

css 파일에 쓰려면

.hyperlink{
    pointer-events: none;
}

3

스타일 시트에 다음 클래스를 만듭니다.

  .ThisLink{
           pointer-events: none;
           cursor: default;
    }

이 클래스를 다음과 같이 동적으로 링크에 추가하십시오.

 <a href='' id='elemID'>some text</a>

    //   or using jquery
<script>
    $('#elemID').addClass('ThisLink');
 </script>

이것은 Jason MacDonald의 대답과 어떻게 다릅니 까?
모든 근로자가 필수입니다.


1

SASS에서 간단히 :

.some_class{
     // styles...

     &.active {
       pointer-events:none;
     }
}

이 코드가 질문에 답할 수 있지만 질문에 대한 이유 및 / 또는 답변 방법 에 대한 추가 컨텍스트를 제공 하면 장기적인 가치가 크게 향상됩니다. 제발 편집 약간의 설명을 추가 할 답변을.
Toby Speight

1

이것은 내가 비활성화하는 데 사용한 방법입니다.

$("#ThisLink").attr("href","javascript:;");

1
이것은 간단하고 쉬운 해결책이며 받아 들여 져야합니다!
Si8

-1
$('#ThisLink').one('click',function(){
  $(this).bind('click',function(){
    return false;
  });
});

이 작업을 수행하는 또 다른 방법이 될 수 있습니다 return false. 링크를 비활성화하는을 가진 핸들러는 한 번의 클릭 후에 추가됩니다.


-4

가장 쉬운 방법

HTML에서 :

<a id="foo" disabled="true">xxxxx<a>

당신의 js에서 :

$('#foo').attr("disabled", false);

속성으로 사용하면 완벽하게 작동합니다.


3
장애인은 <A> 태그의 유효한 속성이 아닙니다
Josepas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.