2011-01-07 19 views
5

Sadece onclick ve href öğelerini (a veya div) etkinleştirmek/devre dışı bırakmak istiyorum.Öğeleri href ve onclick'i devre dışı bırak (ve yeniden etkinleştir)

Bunu nasıl yapacağımı bilmiyorum.

Tıklama etkinliğinde bir işleyici ekleyerek onclick'i devre dışı bırakabilirim, ancak href hala kullanılabilir durumda.


$(this).unbind().click(function(event){ 
    event.preventDefault(); 
    return; 
}); 

Düzenleme A ELEMANLARI


if ($(this).attr("href")) { 
    $(this).attr("x-href", $(this).attr("href")); 
    $(this).removeAttr("href"); 
} 
+0

Bu oldukça belirsiz bir soru. Tam olarak ne yapmaya çalışıyorsun? 'Href' özelliğini de kaldırın? –

+0

Tamam, üzgünüm;) Sadece (bir butona tıklayarak), elemanlar (div veya a) üzerinden tüm linkleri (tıklayın veya href) devre dışı bırakmak/etkinleştirmek istiyorum (0 veya 0) – jibees

cevap

5

i geçici bir çözüm buldum Ok: içerikli ana div üzerine bindirme koyarak tüm elemanları devre dışı bırakmak istedim .. Sadece çalışır.

+1

+1 Hacky, ama çok basit ... –

+0

Veya $ ("# divId") kullanın. $ ("# DivId") gösterisi().; Fikir için teşekkürler ;) – razvanone

1

İÇİN BİR HACK bu tıklama devre dışı bırakmak için deneyin BULUNAMADI:

$ (this) .unbind ('tıklayın');

2

Aşağıdaki deneyebilirsiniz:

MDC documentation for preventDefault

$('a, div').click(
    function(e){ 
    return false; 
     // cancels default action *and* stops propagation 

    // or e.preventDefault; 
     // cancels default action without stopping propagation 
}); 
, jQuery documentation for event.preventDefault.

SO question: JavaScript event.preventDefault vs return false.

click etkinliği iptal edildiği için "href hala mevcut" sorununa ilişkin olarak emin değilim; ancak hrefa öğeleri kaldırmak istiyorsanız:

$('a[href]').attr('href','#'); 

onları (veya, daha doğrusu bir # URL'yi değiştirin) kaldıracaktır.


OP tarafından (sorgulamaya) Yorumlamak cevaben Düzenlendi:

, üzgünüm Ok;) Ben sadece bir düğmeye tıklayarak (mümkün istiyorum), devre dışı bırakmak/etkinleştirmek tüm unsurları üzerinde bağlantıları (href tıklayın ya) (div veya)

$('#buttonRemoveClickId, .buttonClassName').click(
function() { 
    $('a, div').unbind('click'); 
}); 
$('#buttonReplaceClickId, .buttonOtherClassName').click(
function() { 
    $('a, div').bind('click'); 
}); 
+0

Bir eleman için bir çözüm buldum (Bu, yeniden etkinleştirmek için href değerini bir x-href özniteliğine yerleştirmekten oluşur). Ancak onclick işleyiciyi nasıl yeniden etkinleştirebilirim? – jibees

0

Sen, durum çubuğunda gösterilmesini orijinal önlemek için "" doğrudan href niteliğini ayarlayabilirsiniz.

$(this).unbind().click(function(event){ 
    event.preventDefault(); 
}).attr("href", ""); 

Aksi takdirde, bir event.preventDefault() zaten tıklanabilir olmaktan bağlantıları durdurur.

6

Onclick olayında false döndürürseniz, href numaralandırılır.

  1. Bu Goole gidecek: <a href="http://www.google.com" onclick="alert('Go to Google')">Test</a>

  2. Bu Google'a gitmeyecek: <a href="http://www.google.com" onclick="alert('Go to Google'); return false;">Test</a>

+0

ikinci satır şöyle olmalıdır: Test pauldendulk

+0

teşekkürler. Şimdi düzeltildi – wosis

İlgili konular