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?
cevap
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>
Belirli bir bağlamda olması gereken işleve gereksiniminiz varsa, jQuery'nin proxy() yöntemini kullanabilirsiniz http://api.jquery.com/jQuery.proxy/ – KOGI
:
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);
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.
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
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
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
- 1. IIS Express istekleri yürütmek için 4 kez daha uzun sürüyor
- 2. Piksellerde DataFrame döndürmek için Force.
- 3. JavaScript: Bir elemanını milyonlarca kez
- 4. Force show bootstrap tooltip javascript kullanarak
- 5. liveCycle force yakın belge
- 6. Bir Akka Akışını yürütmek ve saniyede bir kez bir mesaj göndermek için nasıl sınırlanır?
- 7. Belirli bir sunucuya bağlanmak için Force PrincipalContext
- 8. Tüm TabItems'i yüklemek için Force TabControl
- 9. iPhone için mobil site için Force download
- 10. force asyncvalidators
- 11. Force install.packages()
- 12. Symfony2 - form alanını eventListener ile değiştirin
- 13. Bir t-sql sorgusu yürütmek için gereken süreyi ölçer
- 14. hedef yeniden yürütmek
- 15. Döngü için kendini bir kez, bir kez bile yinelemedim bile,
- 16. CMake - Önbellek değişkenlerini güncellemek için force find_package
- 17. Çalıştırmak için Force .change() işlevi - jQuery
- 18. Sadece bir kez İyonic
- 19. Force Mercurial her zaman kullanmak için --subrepos
- 20. C# Force ListBox öğeleri güncellemek için
- 21. Brute-Force dil tespiti
- 22. force download ZF2 kullanarak
- 23. Force C# SolverFoundation Tek bir çözüm bulmak için SimplexSolver
- 24. force download ac
- 25. Android force uygulamaları durdurun
- 26. Howto force emacs recoon
- 27. Linux'taki bir sistem() in linux'da bir terminal komutu yürütmek için
- 28. Bir komut satırı yürütmek için bir WScript.shell activeX kullanma
- 29. PHP Force Apache hatası
- 30. sadece bir kez
"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
Bir javascript çerçevesi kullanıyor musunuz? Bence ExtJS'de mümkün. Belki de jQuery'de. – Marc
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