2010-09-24 25 views
37

Bazı sayfalarda görüntülenen bağlantılar var. Sayfadaki diğer etkinliklere dayanarak bunları etkinleştirmek/devre dışı bırakmak istiyorum. Bunu jQuery ile yapmanın bir yolu var mı?jQuery ile bağlantıları dinamik olarak nasıl etkinleştiririm/devre dışı bırakırım?

+0

html5 kullanıyor musunuz? veya xhtml? – RobertPitt

+0

@robertpitt neden bu kadar alakalı? – Yahel

+1

eğer html5 kullanıyorsanız, veriyi dizge olarak saklamak için 'data- *' işlevini kullanabilirsiniz, böylece href'i "data-href" içinde saklayabilir ve akımı '#' ile değiştirebilir, sonra da geçiş yapmak için bir eklenti oluşturabilir Bu, $ ('. disabled'). DisableClick(); 'preventDefault ile yapabilirsiniz, ancak sadece html5 için bir yol açıklayacağım. – RobertPitt

cevap

57
$('selector_for_links_to_disable').bind('click', function(e){ 
     e.preventDefault(); 
}) 

ve etkinleştirilmesi için:

$('selector_for_links_to_enable').unbind('click') 
+0

Bağlama işlevi devam ederken açılmaya çalışılmıyor. O zaman "geri dönüşü" kullanmalısın. –

4

Sen gibi bir şey yapabileceğini:

$('.links').click(function(e){ 
    if([some conditions]){ 
    e.preventDefault(); 
    } 
}); 

aksi takdirde kullanıcıların lol karıştı alacak, artık nasılsa çalıştığını göstermek için emin olun.

2

"Devre dışı bırak" ile ne kastettiğinize bağlıdır.

bu onları hiçbir şey yapar:

$("A").click(function() { return false; }); 
+0

Bence OP, bir linkten metne dönüştürmek anlamına gelir, böylece bağlantı olarak görünmezler. Aksi halde dikkat! – Chris

+1

dönüşü false tavsiye edilmez. Bunun yerine e.preventDefault() kullanın. – dekomote

+0

Peki, her gün yeni bir şeyler öğreniyorsunuz. Teşekkürler. –

1
$(document).delegate('.links', 'click', function() { 
    if ([your condition is true]) { 
    return false; 
    } 
}) 

heyet işleyicileri daha iyidir, dom ermeden diyoruz çünkü yüklendi

1

Siz c Bir böyle bir şey yapmak:

jquery ile düğmelerin işlevleri veriyorum
<script> 
    $(document).ready(function() { 
     $('input#disableall').live('click', function(){ 
      $('a').attr('class', 'disabled'); 
      alert('All links are disabled.'); 
     }); 


     $('input#enableall').live('click', function(){ 
      $('a').attr('class', 'enabled'); 
      alert('All links are enabled.'); 
     }); 

     $('a.disabled').live('click', function(event){ 
      event.preventDefault(); 
     }); 
    }); 
</script> 

<a href='http://www.google.com'>Google<a/> 
<a href='http://www.yahoo.com'>Yahoo<a/> 
<a href='http://www.hotmail.com'>Hotmail<a/> 

<input type='button' id='disableall' value='Disable Links' /> 
<input type='button' id='enableall' value='Enable Links' /> 
0

, bunu yapmak ister:

bununla
indice = ''; 

$('myLink').live('click',function() { 
    if (indice !== 'value1'){ 

     // your code 
    } 

    indice = 'value1'; 
    return indice; 

}); 

, sen fonksiyonu tuşuna sadece ilk seferinde düğmesine basın. Şimdi sadece link1 değerine farklı indeks ayarlamak zorundasınız

İlgili konular