jQuery를 사용하여 앵커를 활성화 또는 비활성화하는 방법은 무엇입니까?


150

jQuery를 사용하여 앵커를 활성화 또는 비활성화하는 방법은 무엇입니까?


모든 답변에 감사드립니다. 여전히 작동하지 않으므로 document.ready 기능을 사용하십시오.
Senthil Kumar Bhaskaran

작동하지 않는 코드 스 니펫을 게시하면 도움이 될 수 있습니다.
Hooray Im 님이

실제로 내 코딩은 Rails에 있고 코딩은 브라우저로 렌더링 할 때 <% = foo.add_related_link ( 'Add email', @ project.email.build) %>입니다. 이메일을 볼 수는 있지만 이메일을 볼 수는 없습니다. e.preventDefault (같은 코딩 시도)하지만 결과
센씰 쿠마 Bhaskaran

답변:


194

앵커가 지정된을 따르지 못하게하려면 다음을 사용하는 href것이 좋습니다 preventDefault().

// jQuery 1.7+
$(function () {
    $('a.something').on("click", function (e) {
        e.preventDefault();
    });
});

// jQuery < 1.7
$(function () {
    $('a.something').click(function (e) {
        e.preventDefault();
    });

    // or 

    $('a.something').bind("click", function (e) {
        e.preventDefault();
    });
});

보다:

http://docs.jquery.com/Events/jQuery.Event#event.preventDefault.28.29

SO에 대한이 이전 질문을 참조하십시오.

jQuery는 링크를 비활성화


나는 그 "attr"을 사용하여 앵커 태그가 아닌 양식 요소에서만 작동합니다.
Senthil Kumar Bhaskaran

1
@senthil-preventDefault는 이것을 수행하는 '적절한'방법으로 간주됩니다. 내 편집을 참조하십시오 (다른 Q + A로 연결)
karim79

실제로 내 코딩은 Rails에 있고 코딩은 브라우저로 렌더링 할 때 <% = foo.add_related_link ( 'Add email', @ project.email.build) %>입니다. 이메일을 볼 수는 있지만 이메일을 볼 수는 없습니다. e.preventDefault (같은 코딩 시도)하지만 결과
센씰 쿠마 Bhaskaran

2
어떻게 되돌 립 $('a.something').on("click", function (e) { e.preventDefault(); });니까?
아렉 쿠스

2
동의하지 않습니다. CSS "포인터 이벤트 : 없음;"을 사용하십시오. 대신 다른 언 스와 마찬가지로.
vitrilo

116

현재 작업중 인 앱은 자바 스크립트와 함께 CSS 스타일로 수행합니다.

a.disabled { color:gray; }

그런 다음 링크를 비활성화 할 때마다 전화합니다.

$('thelink').addClass('disabled');

그런 다음 'thelink'에 대한 클릭 핸들러에서 태그를 항상 확인합니다.

if ($('thelink').hasClass('disabled')) return;

6
마지막 줄에 "false return"이라고 말하면 안됩니까?
Prestaul

1
잘 지내요, 프레스 타울. <a> 태그에 묶이면 <a href="whatever" onclick="return disableLink(this)"> ..을 사용합니다. function disableLink (node) {if (dojo.hasClass (node, 'disabled') false 반환; dojo.addClass (node, 'disabled'); return true;} .. 이렇게하면 링크를 한 번 클릭하여 조치를 수행하고 (참으로 돌아 가기) 이후에는 조치를 허용하지 않습니다 ( )가 false.
NEEK

핸들러에서 $ ( "thelink") 대신 $ (this)를 사용해야합니다. 변경되거나 사용자가 코드를 쉽게 복사 / 붙여 넣기 할 수 있기 때문입니다.
Alexis Wilke

2
비활성화 된 스타일에 'cursor : default'를 추가 할 것을 제안합니다.
Stuart Hallows

40

나는 여기서 훨씬 더 좋아하는 답을 찾았다.

다음과 같습니다 :

$(document).ready(function(){
    $("a").click(function () { 
        $(this).fadeTo("fast", .5).removeAttr("href"); 
    });
});

활성화하려면 href 속성을 설정해야합니다.

$(document).ready(function(){
    $("a").click(function () { 
        $(this).fadeIn("fast").attr("href", "http://whatever.com/wherever.html"); 
    });
});

그러면 앵커 요소가 일반 텍스트가되고 그 반대도 마찬가지입니다.


12
$("a").click(function(){
                alert('disabled');
                return false;

}); 

12

더 좋은 해결책은 비활성화 된 데이터 속성을 설정하고 클릭시 확인하는 것입니다. 이 방법으로 자바 스크립트가 아약스 호출이나 일부 계산으로 끝날 때까지 앵커를 일시적으로 비활성화 할 수 있습니다. 비활성화하지 않으면 몇 번 빠르게 클릭 할 수 있으므로 바람직하지 않습니다 ...

$('a').live('click', function () {
    var anchor = $(this);

    if (anchor.data("disabled")) {
        return false;
    }

    anchor.data("disabled", "disabled");

    $.ajax({
        url: url,
        data: data,
        cache: false,
        success: function (json) {
            // when it's done, we enable the anchor again
            anchor.removeData("disabled");
        },
        error: function () {
             // there was an error, enable the anchor
            anchor.removeData("disabled");
        }
    });

    return false;
});

나는 jsfiddle 예제를 만들었다 : http://jsfiddle.net/wgZ59/76/


11

선택된 답변이 좋지 않습니다.

포인터 이벤트 CSS 스타일을 사용하십시오 . (Rashad Annara가 제안한대로)

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

앵커에 "disabled"속성을 추가하면 다음과 같은 전역 CSS 규칙이있는 경우 작업을 수행합니다.

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

또한 포인터 이벤트의 경우 포인터 이벤트이므로 : hover 상태를 포함시킬 필요가 없습니다. 비활성화 된 선택기 만 포함하면됩니다.
Larry Dukek

10

아래 줄을보십시오

$("#yourbuttonid").attr("disabled", "disabled");
$("#yourbuttonid").removeAttr("href");

Coz, <a>태그 를 사용 중지하더라도 href작동하지만 제거해야합니다 href.

아래 줄을 사용하도록 설정하려는 경우

$("#yourbuttonid").removeAttr("disabled");
$("#yourbuttonid").attr("href", "#nav-panel");

1
이것이 바로 ASP.net MVC ActionLink와 함께 JQuery를 사용할 때 필요한 것입니다. 감사!
eaglei22

8

false를 반환하는 것만 큼 간단합니다.

전의.

jQuery("li a:eq(0)").click(function(){
   return false;
})

또는

jQuery("#menu a").click(function(){
   return false;
})

8
$('#divID').addClass('disabledAnchor');

CSS 파일에서

.disabledAnchor a{
       pointer-events: none !important;
       cursor: default;
       color:white;
}

5
$("a").click(function(event) {
  event.preventDefault();
});

이 메소드를 호출하면 이벤트의 기본 조치가 트리거되지 않습니다.



4

당신은 그들이 당신이 그들을 어떻게 원치 않았는지, 또는 어떻게 불가능하게 할 것인지를 지정하지 않았습니다.

먼저 JQuery의 Attribute Functions를 사용 하고 click 또는 문서 로드 와 같은 이벤트 에서 해당 기능이 발생 하도록 값을 disabled로 설정하는 방법을 알아 내고자 합니다.


1

앵커 태그 내에 텍스트 또는 html 컨텐츠를 넣어야하지만 요소를 클릭 할 때 조치를 취하지 않으려는 경우 (예 : 페이지 링크가 비활성화되어 있기 때문에 페이지 매김 링크를 사용하지 않는 상태로 설정하려는 경우) 현재 페이지)에서 간단히 href를 잘라냅니다. ;)

<a>3 (current page, I'm totally disabled!)</a>

@ michael-meadows의 대답은이 문제를 해결했지만 jQuery / JS와 함께 작업 해야하는 시나리오를 여전히 해결하고있었습니다. 이 경우, 경우 당신은 HTML 자체를 작성을 제어 할 수있는 솔루션을 순수 HTML의 하나입니다 때문에, 단순히 X-보내고 href를 태그하는 것은, 당신이해야 할 모든입니다!

href를 유지하는 jQuery finagling이없는 다른 솔루션을 사용하려면 href에 #을 넣어야하지만 페이지가 맨 위로 튀어 오르고 일반 오래된 비활성화되기를 원합니다. 또는 비워 두지 만 브라우저에 따라 여전히 맨 위로 이동하는 것과 같은 작업을 수행하며 IDE에 따라 잘못된 HTML입니다. 그러나 분명히a 태그는 HREF가없는 완전히 유효한 HTML입니다.

마지막으로, 당신은 말할 수 있습니다 : 좋아, 왜 태그를 완전히 덤프하지 않습니까? 종종 a태그를 사용할 수 없기 때문에 태그는 Bootstrap의 페이지 매김과 같이 CSS 프레임 워크 또는 사용중인 컨트롤의 스타일링 용도로 사용됩니다.

http://twitter.github.io/bootstrap/components.html#pagination


1

위의 답변을 조합 하여이 문제를 해결했습니다.

a.disabled { color: #555555; cursor: default; text-decoration: none; }

$(".yourClass").addClass("disabled").click(function(e){ e.preventDefault(); 

0

앵커 태그로 동작 할 필요가 없다면이를 대체하는 것이 좋습니다. 예를 들어 앵커 태그가

<a class="MyLink" href="http://www.google.com"><span>My</span> <strong>Link</strong></a>

그런 다음 jquery를 사용하면 링크 대신 텍스트를 표시해야 할 때이 작업을 수행 할 수 있습니다.

var content = $(".MyLink").text(); // or .html()
$(".MyLink").replaceWith("<div>" + content + "</div>")

따라서 앵커 태그를 div 태그로 간단히 바꿀 수 있습니다. 이것은 훨씬 쉬우 며 (단 2 줄) 의미 론적으로도 정확합니다 (지금 링크가 필요하지 않기 때문에 링크가 없어야 함)


0

disabled 속성이있는 요소를 비활성화하거나 활성화합니다.

// Disable 
$("#myAnchor").prop( "disabled", true );

// Enable
$( "#myAnchor" ).prop( "disabled", false );

이 답변이 왜 투표에 실패합니까? "jQuery를 사용하여 앵커를 활성화 또는 비활성화하는 방법?"
RitchieD

앵커를 클릭하면 링크가 여전히 열려 있기 때문입니다.
Zombaya
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.