[jquery] jQuery는 링크를 비활성화

누구든지 사용하지 않고 jquery에서 링크를 비활성화하는 방법을 알고 return false;있습니까?

특히, 내가하려고하는 것은 항목의 링크를 비활성화하고 jquery를 사용하여 클릭을 수행 한 다음 해당 항목을 다시 활성화하여 다시 클릭하면 기본으로 작동하도록하는 것입니다.

감사. 데이브

업데이트
코드는 다음과 같습니다. .expanded클래스가 적용된 후해야 할 일은 비활성화 된 링크를 다시 활성화하는 것입니다.

$('ul li').click(function(e) {
    e.preventDefault();
    $('ul').addClass('expanded');
    $('ul.expanded').fadeIn(300);
    //return false;
});



답변

$('#myLink').click(function(e) {
    e.preventDefault();
    //do other stuff when a click happens
});

그러면 지정된 href를 방문하는 하이퍼 링크의 기본 동작이 방지됩니다.

jQuery 튜토리얼에서 :

클릭 및 대부분의 다른 이벤트의 경우 이벤트 핸들러에서 event.preventDefault ()를 호출하여 jquery.com에 대한 링크를 따라 기본 동작을 방지 할 수 있습니다.

당신이 원하는 경우 preventDefault()특정 조건이 (문제가 예를 들어 숨겨져)을 충족하는 경우에만, 당신은 클래스와 UL의 가시성을 테스트 할 수있는 확장 . 만약 그것이 보이지 않는다면 (즉, 숨겨져 있지 않다면) if 문이 입력되지 않을 것이므로 링크는 정상적으로 실행되어야하므로 기본 동작은 막히지 않을 것입니다 :

$('ul li').click(function(e) {
    if($('ul.expanded').is(':hidden')) {
        e.preventDefault();
        $('ul').addClass('expanded');
        $('ul.expanded').fadeIn(300);
    }
});


답변

이 시도:

$("a").removeAttr('href');

편집하다-

업데이트 된 코드에서 :

 var location= $('#link1').attr("href");
 $("#link1").removeAttr('href');
 $('ul').addClass('expanded');
 $('ul.expanded').fadeIn(300);
 $("#link1").attr("href", location);


답변

나처럼 Google을 통해 여기에 온 다른 사람들을 위해-여기 다른 접근법이 있습니다.

css:
.disabled {
  color: grey; // ...whatever
}

jQuery:
$('#myLink').click(function (e) {
  e.preventDefault();
  if ($(this).hasClass('disabled'))
    return false; // Do something else in here if required
  else
    window.location.href = $(this).attr('href');
});

// Elsewhere in your code
if (disabledCondition == true)
  $('#myLink').addClass('disabled')
else
  $('#myLink').removeClass('disabled')

이 클래스는 CSS 클래스 일뿐만 아니라

class = “buttonstyle”

뿐만 아니라이 두

class = “buttonstyle disabled”

jQuery로 클래스를 쉽게 추가하고 제거 할 수 있습니다. href를 만질 필요가 없습니다 …

나는 jQuery를 좋아한다! 😉


답변

다음은 간결하고 최소화 된 스크립팅을 선호하는 대체 CSS / jQuery 솔루션입니다.

CSS :

a.disabled {
  opacity: 0.5;
  pointer-events: none;
  cursor: default;
}

jQuery :

$('.disableAfterClick').click(function (e) {
   $(this).addClass('disabled');
});


답변

다음을 클릭하여 링크 클릭을 제거 할 수 있습니다.

$('#link-id').unbind('click');

다음과 같은 방법으로 링크를 다시 활성화 할 수 있습니다.

$('#link-id').bind('click');

링크에 ‘disabled’속성을 사용할 수 없습니다.


답변

href 경로를 사용하면 저장할 수 있습니다

비활성화하려면 :

$('a').each(function(){
    $(this).data("href", $(this).attr("href")).removeAttr("href");
});

그런 다음 다음을 사용하여 다시 활성화하십시오.

$('a').each(function(){
    $(this).attr("href", $(this).data("href"));
});

어떤 경우에는 클릭 이벤트가 이미 다른 곳에 바인딩되어 있고 제어 할 수 없기 때문에이 방법으로해야했습니다.


답변

나는 항상 링크를 비활성화하기 위해 jQuery에서 이것을 사용합니다.

$("form a").attr("disabled", "disabled");