jQuery deaktivieren einen Link

Weiß jemand, wie man einen Link in Jquery deaktivieren kann, OHNE return false; zu verwenden?

Insbesondere, was ich versuche zu tun ist, deaktivieren Sie den Link eines Elements, Durchführung eines Klicks auf es mit Jquery, die einige Dinge auslöst, dann wieder aktivieren, dass Link, so dass, wenn es wieder angeklickt wird es funktioniert als Standard.

Vielen Dank! Dave

UPDATE Hier's der Code. Was es tun muss, nachdem die Klasse .expanded angewendet wurde, ist, den deaktivierten Link wieder zu aktivieren.

$('ul li').click(function(e) {
    e.preventDefault();
    $('ul').addClass('expanded');
    $('ul.expanded').fadeIn(300);
    //return false;
});
Kommentare zu der Frage (7)
Lösung
$('#myLink').click(function(e) {
    e.preventDefault();
    //do other stuff when a click happens
});

Das verhindert das Standardverhalten eines Hyperlinks, das darin besteht, die angegebene href zu besuchen.

Aus dem jQuery tutorial:

Für Klick und die meisten anderen Ereignisse, können Sie können Sie das Standardverhalten verhindern - hier, indem man dem Link zu jquery.com folgt

  • durch den Aufruf von event.preventDefault() im Event-Handler

Wenn Sie preventDefault() nur dann einsetzen wollen, wenn eine bestimmte Bedingung erfüllt ist (z.B. wenn etwas versteckt ist), können Sie die Sichtbarkeit Ihrer ul mit der Klasse expanded testen. Wenn es sichtbar ist (d.h. nicht versteckt), sollte der Link ganz normal ausgelöst werden, da die if-Anweisung nicht eingegeben wird, und somit das Standardverhalten nicht verhindert wird:

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

Versuchen Sie dies:

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

EDIT-

Von Ihrem aktualisierten Code:

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

Für andere, die wie ich über Google hierher gekommen sind - hier's ein anderer Ansatz:

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')

Denken Sie daran: nicht nur dies ist eine css-Klasse

class="buttonstyle"

aber auch diese beiden

class="buttonstyle deaktiviert"

so dass Sie mit jQuery leicht weitere Klassen hinzufügen und entfernen können. Sie brauchen href nicht zu berühren...

Ich liebe jQuery! ;-)

Kommentare (5)

Hier ist eine alternative css/jQuery-Lösung, die ich wegen ihrer Kürze und des minimierten Skriptings bevorzuge:

css:

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

jQuery:

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

Sie können Klick für Link entfernen, indem Sie folgen;

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

Sie können den Link durch Folgen wieder aktivieren,

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

Sie können nicht 'disabled&#39 verwenden; Eigenschaft für Links.

Kommentare (2)

Wenn Sie die href-Route gehen, können Sie sie speichern

Zu deaktivieren:

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

Aktivieren Sie dann die Verwendung wieder:

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

In einem Fall musste ich es so machen, weil die Klickereignisse bereits woanders gebunden waren und ich keine Kontrolle darüber hatte.

Kommentare (0)

Ich verwende dies immer in jQuery zum Deaktivieren von Links

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

html-Link-Beispiel:


        <a class="btn btn-primary" id="BT_Download" target="blank" href="DownloadDoc?Id=32">

        Download Document
        </a>

dies in jQuery verwenden

    $('#BT_Download').attr('disabled',true);

Dies zu css hinzufügen:

    a[disabled="disabled"] {
        pointer-events: none;
    }
Kommentare (2)

Mein Favorit in "Kasse, um einen Artikel zu bearbeiten und zu verhindern, dass -wilder wilder Westen überall hinklickt, während man sich in einer Kasse befindet" Funktionen

$('a').click(function(e) {
    var = $(this).attr('disabled');
    if (var === 'disabled') {
        e.preventDefault();
    }
});

Wenn ich also möchte, dass alle externen Links in einer zweiten Aktionssymbolleiste deaktiviert werden, während ich mich im "Bearbeitungsmodus&quot befinde; wie oben beschrieben, fügt i'll in der Editierfunktion

$('#actionToolbar .external').attr('disabled', true);

Linkbeispiel nach einem Brand:

<a href="http://goo.gl" target="elsewhere" class="external" disabled="disabled">Google</a>

Und jetzt können Sie die Eigenschaft disabled für Links verwenden

Prost!

Kommentare (0)

Sie sollten Ihre Antwort [hier][1] finden.

Danke @Will und @Matt für diese elegante Lösung.

jQuery('#path .to .your a').each(function(){
    var $t = jQuery(this);
    $t.after($t.text());
    $t.remove();
});

[1]: https://stackoverflow.com/questions/586024/disabling-links-with-jquery

Kommentare (0)

Sie können den Link nach Belieben ein- und ausblenden

$(link).hide();
$(link).show();
Kommentare (0)

Einfach etwas auslösen, ein Flag setzen, false zurückgeben. Wenn das Flag gesetzt ist - nichts tun.

Kommentare (1)

unbind() wurde in jQuery 3 veraltet, verwenden Sie stattdessen die off() Methode:

$("a").off("click");
Kommentare (0)

Dies funktioniert für Links, bei denen das onclick-Attribut inline gesetzt ist. Auf diese Weise können Sie später auch das "return false&quot entfernen; zurückzugeben, um es zu aktivieren.

        //disable all links matching class
        $('.yourLinkClass').each(function(index) {
            var link = $(this);
            var OnClickValue = link.attr("onclick");
            link.attr("onclick", "return false; " + OnClickValue);
        });

        //enable all edit links
        $('.yourLinkClass').each(function (index) {
            var link = $(this);
            var OnClickValue = link.attr("onclick");
            link.attr("onclick", OnClickValue.replace("return false; ", ""));
        });
Kommentare (0)

Ich weiß, dies ist't mit jQuery, aber Sie können einen Link mit einigen einfachen css deaktivieren:

a[disabled] {
  z-index: -1;
}

würde das HTML wie folgt aussehen

<a disabled="disabled" href="/start">Take Survey</a>
Kommentare (0)

Verwenden Sie einfach $("a").prop("disabled", true);. Dies wird das de Link-Element wirklich deaktivieren. Muss prop("disabled", true); sein. Don't use attr("disabled", true).

Kommentare (0)