2011-07-16 18 views
8
Ben elemanı kopyalayıp DOM başka bir bölümüne ekleyin, ancak ilk kaldırmanız gerekir sonraki bir noktada

Javascript'teki bir öğeden bir tıklama etkinliğini nasıl kaldırabilirim?

var id = "someId"; 
var elem = document.getElementById("elemId"); 
elem.addEventListener("click", function() { someFunction(id); }, false); 

:

Aşağıdaki kodu kullanarak kendisine bağlı bir tıklama etkinliğini sahip bir <div> öğesi click olay

var elem = document.getElementById("elemId"); 
elem.removeEventListener("click", ???? , false); 

Ben dinleyici başvurmak için ve şimdiye kadar ben denedim hiçbir şey öğesinden olayı kaldırdığı nasıl emin değilim.

Herhangi bir fikir?

Alkış

Stewart

cevap

6

Taşı anonim tıklama işleyici işlevi: gerekir

var id = "someId"; 
var elem = document.getElementById("elemId"); 
var elemEventHandler = function() { someFunction(id); }; 
elem.addEventListener("click", elemEventHandler , false); 

bundan sonra hiç:

var elem = document.getElementById("elemId"); 
elem.removeEventListener("click", elemEventHandler , false); 
+0

zorluk ile Bu EventListener ile çok sayıda eleman olabilir. O herhangi bir zamanda DOM, her biri kendi id değeri ile. Bu nedenle tek bir global elemEventHandler değişkeni oluşturamıyorum. Olay dinleyicisini ekleyen kod, kimliğin geçirildiği kendi işlevinde gerçekleşir. Bunu nasıl başarabilirim? –

+0

@Stewart. Bir dizi eleman için aynı işleyiciye referans vermek ve bu referanslardan birini kaldırmak mümkün. Göstermek için jsfiddle bir örnek yaptım: http://jsfiddle.net/KooiInc/qQv9K/ - Ayrıca, tıklatılan elemanın kimliğini nasıl bulacağınızı da görebilirsiniz, bu arada – KooiInc

+0

@Koolinc - teşekkürler. İyi görünüyor, etrafta hızlı bir oyun oynuyor ve hâlâ bazı problemler yaşıyor, ancak daha sonra bu konuya biraz daha zaman ayıracak ve ipliği güncelleyecektir. –

İlgili konular