Devre dışı bırakılmış href etiketi


264

Bu bağlantı devre dışı olmasına rağmen yine de tıklanabilir.

<a href="/" disabled="disabled">123n</a>

Devre dışı bırakılmışsa tıklanamaz hale getirebilir miyim? JavaScript'i mutlaka kullanmalı mıyım?



Sadece açıklığa kavuşturmak için: Bağlantıyı devre dışı bıraktığınızı ancak "tıklama" etkinliğinin hala tetiklendiğini kastettiğinizi tahmin ediyorum.
Levi Hackwith

2
İşaretçi olaylarını kullanabilirsiniz: none; içinde css
ppsreejith


Ama neden sadece href niteliğini kaldırmıyoruz?
MrBoJangles

Yanıtlar:


234

Köprüler için devre dışı bırakılmış bir özellik yoktur. Bir şeyin bağlanmasını istemiyorsanız <a>etiketi tamamen kaldırmanız veya hrefniteliğini kaldırmanız gerekir .


13
Bu çalışır, ancak mevcut CSS'yi bırakırsanız kötü UX olarak düşünürüm. Kullanıcı tıklayıp bir şeyin bozuk olduğunu düşünecektir. Hiçbir zaman kullanıcının neler olduğu konusunda kafasını karıştırmasına izin vermemelisiniz.
agm1984

Sadece imleç ekleniyor: yok; ilgili link imleç kadar elde gibi görünüyor: yok; işaretçi-olaylar: yok; . . . . Her halükarda benim için tek sayfalık bir uygulama sitesinde sayfa değişikliğini mümkün kılıyor.
Gövde

2
CSS imleci veya işaretçi olayları kullansanız bile bağlantı yine de odaklanabilir ve "tıklanabilir" (Enter tuşunu kullanarak) olurdu; bu, bir şeyi devre dışı bırakmaya çalışıyorsanız muhtemelen kötü olur. span
Tom Golden

3
Ayrıca onclick="return false;"bağlantı etiketine ekleyebilir titleve bağlantının geçerli olmadığını açıklayan bir özellik ekleyebilirsiniz .
Craig London

1
Ayrıca, sadece temizlenmesi hrefve ayrılmasının <a>ADA uyumlu olmayacağına inanıyorum.
SlothFriend

352

Css yardımıyla köprüyü devre dışı bırakacaksınız. Aşağıdakini deneyin

a.disabled {
  pointer-events: none;
  cursor: default;
}
<a href="link.html" class="disabled">Link</a>


4
Lütfen bunun yalnızca Internet Explorer 11+
sürümünde

31
Sekme tuşuyla bağlantı etiketine odaklanın ve Enter tuşuna basın, bu özellik çalışmaz.
Majid Basirati

2
Sadece IE9-10
Ringo ile

1
Bu, hover olayını da devre dışı bırakır; bu, imleç stilinin çalışmadığı anlamına gelir. (<span> & # x20E0; </span> <- bunların hiçbiri engelli bağlantınızda yok.)
Seth Battin

2
ayrıca etkin ve devre dışı bağlantılar arasında ayrım yapmak için opaklık kullanın. opacity: 0.5;
Aamer Shahzad

84

Kullanabilirsiniz:

<a href="/" onclick="return false;">123n</a>

2
tıklama etkinliği için bir işleyici olarak zaten bir işlev varsa çalışmaz
rahul shukla

70

Aşağıdaki çözümlerden birini kullanabilirsiniz:

HTML

<a>link</a>

JavaScript

<a href="javascript:function() { return false; }">link</a>
<a href="/" onclick="return false;">link</a>

CSS

<a href="www.page.com" disabled="disabled">link</a>

<style type="text/css">
    a[disabled="disabled"] {
        pointer-events: none;
    }
</style>


32

Bunu dene:

<a href="javascript:void(0)" style="cursor: default;">123n</a>

Doğru, her zaman href = "javascript: void (0)" kullanıyorum
Jan Hamara

Eğer yine de "link link" gibi sağ tıklama fonksiyonunu korumak istiyorsanız, bu hoş bir dokunuş olduğunu
Developer SPM

18

<a>Etiketi bir yok disabledsadece içindir niteliğini, <input>s (ve <select>s ve<textarea> s).

Bir bağlantıyı "devre dışı bırakmak" için, hrefözniteliğini kaldırabilir veya false döndüren bir tıklama işleyicisi ekleyebilirsiniz.


@rocket href niteliğini kaldırmanın herhangi bir anlamı var mı? Yani, zorunlu bir özellik olması gerekiyordu. Bu tür şeyler bugünlerde çok önemli görünmüyor.
Ringo

@Ringo: İşaretini kaldırmak, hrefüzerine geldiğinizde imlecin değişmemesine neden olabilir.
Rocket Hazmat

11

Kaldırmanız gerekir <a> kurtulmak etiketi .

veya kullanmayı deneyin: -

  <a href="/" onclick="return false;">123n</a>

10

HTML:

<a href="/" class="btn-disabled" disabled="disabled">123n</a>

CSS:

.btn-disabled,
.btn-disabled[disabled] {
  opacity: .4;
  cursor: default !important;
  pointer-events: none;
}

10

İpuçları 1: CSS Kullanımı pointer-events: none;

İpuçları 2: JavaScript Kullanma javascript:void(0) (Bu en iyi yöntemdir)

<a href="javascript:void(0)"></a>

İpuçları 1: Jquery kullanma $('selector').attr("disabled","disabled");


9

Yalnızca CSS: Bu bağlantıyı href.

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

5

Bir ebeveyne sahip olmak pointer-events: noneçocuğu şu şekilde devre dışı bırakır a-tag(div'in a'yı kaplamasını ve 0 genişlik / yüksekliğe sahip olmamasını gerektirir):

<div class="disabled">
   <a href="/"></a>
</div>

nerede:

.disabled {
    pointer-events: none;
}

Ayrıca "pointer-events: none" stilini doğrudan <a> etiketine uygulayabilirsiniz; örneğin, devre dışı bırakmak istediğinizde javascript ile .disabled sınıfını ekleyebilirsiniz. Bir sarma <div> gerekli değildir.
Les Nightingill

Wrap burada gösterildiği gibi gerekli değildir: krom, firefox ve safari için https://jsfiddle.net/d1owm1d0/1/ . Demomuzun başarısız olduğu farklı bir tarayıcı mı kullanıyorsunuz?
Les Nightingill

Bir etiket şey sarar @LesNightingill Eğer öyle değil çalışır: jsfiddle.net/d9gwgdyf
Ferus

Doğru @Ferus. Bunun neden doğru olduğundan emin değilim.
Les Nightingill

4
$(document).ready(function() {
   $('a').click(function(e) {
     e.preventDefault();
  });
});

1
Bu Kod sağ tıklama üzerinde çalışıyor.Bu yüzden tam bir çözüm değil.
Lakhan

4

bu kodu kullanarak bağlantıyı çalışma zamanında javascript kullanarak devre dışı bırakabilirsiniz

$ ('. sayfa bağlantısı'). css ("pointer-events", "none");


Partiye geç, ama bu aynı zamanda herhangi bir imleç css kaldırır. Benim durumumda, bir bağlantı devre dışı bırakılırsa "imleç: izin verilmiyor" kullanın.
Steve


3

Bir <a>etikette devre dışı bırakılmış özelliği taklit edebilirsiniz .

<a href="link.html" disabled="">Link</a>

a[disabled] {
   pointer-events: none;
   cursor: default;
}


3

Bende bir tane var:

<a href="#">This is a disabled tag.</a>

Size yardımcı olacağını umuyoruz;)


1
Merhaba Werenverlivitz, hoş geldiniz. Güzel, 7-8 yıl sonra böyle bir cevabı veren ilk kişi olacağını düşünmemiştim!
Tiago Martins Peres 李大仁

2

Doğrudan devre dışı bırakamayız ancak aşağıdakileri yapabiliriz

  1. Ekle type="button" .
  2. kaldır href=""özniteliği .
  3. disabledözniteliği ekleyin , böylece kodlayıcıyı değiştirerek devre dışı bırakıldığını ve soluklaştığını gösterin.

Aşağıdaki bir örnek

<?php
if($status=="Approved"){ 
?>
  <a type="button" class="btn btn-primary btn-xs" disabled> EDIT
     </a>
  <?php    
}else{
?>
  <a href="index.php" class="btn btn-primary btn-xs"> EDIT
    </a>
  <?php    
}
?>

2

Bir ng-href üçlü işlemi kullanarak istenen sonucu elde edebildim

<a ng-href="{{[condition] ? '' : '/'}}" ng-class="{'is-disabled':[condition]}">123n</a>

nerede

a.is-disabled{
   color: grey;
   cursor: default;

   &:hover {
      text-decoration: none;
   }
} 

1

Düğmeleri ve bağlantıları doğru kullanın.

• Düğmeler bir web sayfasındaki komut dosyası işlevselliğini etkinleştirir (iletişim kutuları, bölgeleri genişlet / daralt).

• Bağlantılar sizi farklı bir sayfaya veya aynı sayfadaki farklı bir konuma götürür.

Bu kurallara uyarsanız, bir bağlantıyı devre dışı bırakmanız gerektiğinde hiçbir senaryo olmayacaktır. Bir bağlantı görsel olarak devre dışı ve boş görünüyor olsa bile

<a href="" ng-click="Ctrl._isLinkActive && $ctrl.gotoMyAwesomePage()"

Erişilebilirliği düşünmeyeceksiniz ve ekran okuyucuları bunu bir bağlantı olarak okuyacak ve görme engelli insanlar bağlantının neden çalışmadığını merak etmeye devam edecektir.


1

WordPress kullanıyorsanız, bir şeyi nasıl kodlayacağınızı bilmenize gerek kalmadan bunu ve çok daha fazlasını yapabilen bir eklenti oluşturdum. Tek yapmanız gereken, devre dışı bırakmak istediğiniz bağlantıların seçicisini eklemek ve ardından "Bu seçiciyle tüm bağlantıları yeni bir sekmede devre dışı bırak" ı seçmek. görüntülenen açılır menüden güncelle'yi tıklayın.

Bunu gösteren bir gif görmek için buraya tıklayın

Sen edebilirsiniz WordPress.org Eklenti deposundan ücretsiz sürümünü almak denemek için.


1

Bir etiketi devre dışı bırakmanın çeşitli yolları şunlardır:

<a >Link Text</a> remove the href from your anchor tag
<a href=”javascript:void(0)”/>Link text</a> put javascript:void(0) in href
<a href="/" onclick="return false;">Link text</a> using return false

Bağlantı etiketi için devre dışı bırakılmış özellik olmadığından. Bir jQuery işlevi içindeki bağlantı etiketi davranışını durdurmak istiyorsanız, işlevin başlangıcında aşağıdaki satırı kullanabilirsiniz:

$( "a" ).click(function( e ) {
e.preventDefault();
$( "<div>" )
.append( "default " + e.type + " prevented" )
.appendTo( "#log" );
});

event.preventDefault ()


1

Görüyorum ki, zaten burada bir ton cevap var, ama daha önce bahsettiğim yaklaşımları çalışmayı bulduğum yaklaşımla birleştiren net bir cevap olduğunu düşünmüyorum. Bu, bağlantının hem devre dışı görünmesini sağlamak hem de kullanıcıyı başka bir sayfaya yönlendirmemektir.

Bu yanıt , jquery ve bootstrap kullandığınızı varsayar ve hrefdevre dışı bırakıldığında özelliği geçici olarak saklamak için başka bir özellik kullanır .

//situation where link enable/disable should be toggled
function toggle_links(enable) {
    if (enable) {
        $('.toggle-link')
        .removeClass('disabled')
        .prop('href', $(this).attr('data-href'))
    }
    else {
        $('.toggle-link')
        .addClass('disabled')
        .prop('data-href', $(this).prop('href'))
        .prop('href','#')
    }
a.disabled {
  cursor: default;
}

0

Bir şey var href etiketindeki fareyle üzerine geldiğinizde tarayıcı penceresinin sol alt tarafında görüntülenir.

Şahsen javascript gibi bir şey olması düşünüyorum : void (0) kullanıcıya görüntülenen bir .

Bunun yerine, href'i bırakın, sihrinizi jQuery / başka bir şeyle yapın ve bir stil kuralı ekleyin (yine de bir bağlantı gibi görünmesi gerekiyorsa):

a {
    cursor:pointer;
}

0

En iyi cevap her zaman en basit olanıdır. Kodlamaya gerek yok.

(A) bağlantı etiketinde href özelliği yoksa, bu yalnızca bir köprü için yer tutucudur. Tüm tarayıcılar tarafından desteklenir!

<a href="/">free web counters</a><br  />
<a "/">free web counters</a>


-1

Bağlantı etiketlerini false döndürerek devre dışı bırakabilirsiniz. Benim durumumda bir Jquery akordeon için açısal ve ng devre dışı kullanıyorum ve bölümleri devre dışı bırakmam gerekiyor.

Bu yüzden bunu düzeltmek için küçük bir jip snippet'i oluşturdum.

       <a class="opener" data-toggle="collapse"
                   data-parent="#shipping-detail"
                   id="shipping-detail-section"
                   href="#shipping-address"
                   aria-expanded="true"
                   ng-disabled="checkoutState.addressSec">
                   Shipping Address</a>
     <script>
          $("a.opener").on("click", function () {
           var disabled = $(this).attr("disabled");
           if (disabled === 'disabled') {
            return false;
           }
           });
     </script>

-1

sadece bağlantıyı geçici olarak devre dışı bırakmak, ancak daha sonra etkinleştirmek için href'i orada bırakmak istiyorsanız (bu yapmak istediğim şey) tüm tarayıcıların ilk href'i kullandığını gördüm. Böylece yapabildim:

<a class="ea-link" href="javascript:void(0)" href="/export/">Export</a>

Bu, stackoverflow.com/q/26341507/1709587 adresinde açıklandığı gibi geçersiz HTML'dir . Motivasyonunuz sadece href'i kaynak kodunuzda tutmaksa, kaynağınızı daha sonra geri yüklemek için düzenlemek kolaydır, bunu yapmak gibi bir yorum kullanmak gibi spesifikasyonu ihlal etmenin yolları vardır. Bunun için geçersiz bir neden olmadan böyle geçersiz HTML yazmaya karşı öneriyorum.
Mark Amery

-1

Bana uygun varyant:

<script>
  function locker(){
    if ($("a").hasClass("locked")) {
         $("a").removeClass('locked').addClass('unlocked');
         $("a").attr("onClick","return false");
    } else {
         $("a").css("onclick","true");
         $("a").removeClass('unlocked').addClass('locked');
         $("a").attr("onClick","");
    }
  }
</script>

<button onclick="locker()">unlock</button>

<a href="http://some.site.com" class="locked">
  <div> 
      .... 
  <div>
</a>

-1

<a href="/" disabled="true" onclick="return false">123</a>

Sadece ekleyerek: Bu genel olarak çalışır, ancak kullanıcı tarayıcıda javascript'i devre dışı bıraktıysa çalışmaz.

1) İsteğe bağlı olarak, href etiketini devre dışı bırakmak için önyükleme etiketinizde Bootstrap 3 sınıfını kullanabilirsiniz, bootstrap 3 eklentisini entegre ettikten sonra

<a href="/" class="btn btn-primary disabled">123n</a>

Veya

2) Tarayıcılarda html veya js kullanarak javascript'i nasıl etkinleştireceğinizi öğrenin. veya kullanıcıya web sitesini kullanmadan önce javascript'i etkinleştirmesini söyleyen bir açılır pencere oluşturun

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.