2008-09-23 21 views
7

Düğme öğesine bir tıklama olayı eklemek ve daha sonra kaldırmak istiyorum, ancak beklendiği gibi çalışmak için unclick() veya unbind() olaylarını alamıyorum. Aşağıdaki kodda, düğme 'ten rengi' ve tıklama olayı çalışır.Olay işleme jQuery unclick() ve unbind() olayları?

window.onload = init; 
function init() { 
    $("#startButton").css('background-color', 'beige').click(process_click); 
    $("#startButton").css('background-color', 'tan').unclick(); 
} 

Olayları öğelerimden nasıl kaldırabilirim?

cevap

18

unclick() diye bir şey yoktur. Bunu nereden aldın?

Sen unbind arayarak bir elementin tek tek olay işleyicileri kaldırabilirsiniz: Tüm işleyicileri kaldırmak isterseniz

$("#startButton").unbind("click", process_click); 

veya bir işleyici olarak isimsiz fonksiyon kullanılır, sen unbind() ikinci argümanı atlayabilirsiniz :

$("#startButton").unbind("click"); 
+0

http://www.visualjquery.com/1.0.4.html unclick (fn) Eşleşen öğelerin her birinden ilişkili tıklama olayını kaldırır. Orijinal bağlama yönteminde kullanılan özdeş işlevi geçmelisiniz. –

+2

Bilgi için teşekkürler. Biraz daha derine kazdım ve jQuery 1.1'de unclick() 'ın kaldırıldığını gördüm. – Jim

3

unbind arkadaşınızdır.

$("#startButton").unbind('click') 
0

Bunu açmak istediğinizden emin misiniz? Ya sonra tekrar tekrar bağlamak istersen, tekrar tekrar? Dinamik olay işleme bind/unbind sevmiyorum, çünkü onlar kod farklı noktalardan çağrıldığında, elden çıkmak eğilimindedir.

Sen alternatif seçenekler düşünebilirsiniz:

  • "process_click" içeride mantık uygulamak

    • değişim düğmesi "özürlü" özelliği fonksiyonu

    Sadece benim 2 sent değil, evrensel bir çözüm.

  • 6

    Yoksa bunu kullanmak hemen sonra tıklama işlevini kesme istediğiniz nerede zorunda gibi bir durum var olabilir:

    $('#selector').click(function(event){ 
        alert(1); 
        $(this).unbind(event); 
    });