2011-02-02 18 views
15

Bir javascript olay dinleyicisini zorlamak şartıyla, bir kez yürütmek için yeterli güç olmaksızın, daha sonra yürütmek için yerine getirilmesi şartını dinlemeye devam etmek mümkün mü?force javascript EventListener bir kez yürütmek için?

+0

"Durum doğru olmadan" ... hangi koşul? Ayrıca, eğer bir kez ateş ederse, o zaman dinlemeye devam edin, sonra muhtemelen tekrar ateş edin, o zaman ... bir kez ateş etmeyin. Bir seferde yalnızca 1 etkinliği işlemek istediğinizi (birden fazla eşzamanlı olay değil) mi kastediyorsunuz? – KOGI

+0

Bir javascript çerçevesi kullanıyor musunuz? Bence ExtJS'de mümkün. Belki de jQuery'de. – Marc

+0

jQuery bir .one() yöntemine sahiptir, ancak tam olarak aradığınız şey olup olmadığından emin değilim. Yine de, olayları işleyicide yeniden bağlayabilirsiniz. Bu, eşzamanlı olayları işlememe etkisine sahip olacak, ardından işleyici tamamlandıktan sonra, etkinliği tekrar dinlemeye başlayacaktır. http://api.jquery.com/one/ – KOGI

cevap

0

bir işlev kodu sarın eğer, sadece sayfa yüklendiğinde işlevini çağırmak

örnek eklemek için düzenlendi:

<a ..onclick='someFunction()'>click</a> 

<script type='text/javascript'> 
function someFunction() { 
    // do whatever 
} 

// call the function 
someFunction(); 
</script> 
+0

Belirli bir bağlamda olması gereken işleve gereksiniminiz varsa, jQuery'nin proxy() yöntemini kullanabilirsiniz http://api.jquery.com/jQuery.proxy/ – KOGI

-1

:

ne olay burada ama bir örnek bilmiyorum Sorunuzu doğru bir şekilde anlarsam, yalnızca bir olayı bir seferde ele almak istersiniz (eğer bir olay hızlı bir şekilde birden çok kez ateş ederse, sadece bir tanesini ele almak istersiniz), daha sonra işleyici tamamlandıktan sonra dinlemeye devam edeceksiniz. daha fazla etkinlik. Doğru?

jQuery Sadece bir kez olayı işler, ancak eğer istediğiniz kadar o zaman çalışacaktır işleyicideki olayı yeniden bağlamak bir .one() yöntemi api.jquery.com/one

sahiptir.

function handler() 
{ 
    // do stuff 

    $(this).one('click', handler); 
} 

$('.someElement').one('click', handler); 
34
var clickFunction = function (event) { 
    //do some stuff here 
    window.removeEventListener('click',clickFunction, false); 

}; 
window.addEventListener("click", clickFunction, false); 

Bu kapatma sihirli removeEventListener clickFunction bulalım gibi, bir kez clickFunction yangın izin verir.

Sadece basit bir şey yapmak için kütüphane kullanmanıza gerek yok.

+0

Bu modeli daha fazla kullanmanız gerekiyorsa, bu hızlı bir şekilde sorun olur. tek kodda iki kez. Bu, bir animasyonun "kanca geçişi, değişiklik yapması, geçişi kendinin kaldırması" olduğu ve genellikle onu zincirlemeniz gereken css animasyon bağlamlarında çok yaygındır. Http://hastebin.com/ikixonajuk.coffee benzer bir desen çok daha sürdürülebilir. NodeJS'de sadece "bir kez" denir. – Dmitry

+0

1. 2011'de cevabın ilk gönderildiği tarihte, bir kez müsait olmadı. 2. asıl soruda bir istemci tarafı uygulama sorusu bu yüzden nodejs yararlı değil 3. kahve betiğiniz aslında hafif bir değişiklik ile aynı fikirdir. – Jlam

+1

bir kez şu anda tarayıcıda kullanılabilir mi, yoksa hala onun için şişirilmiş üçüncü parti kütüphaneleri mi icat etmek zorundayız? – Dmitry

İlgili konular