Zastanawiam się, czy możliwe jest wymuszenie detektora zdarzeń javascript, bez warunku, który jest prawdziwy, zmusić go do wykonania raz, a następnie kontynuować słuchanie, aby warunek został spełniony, aby wykonać dalej?wymusić wykonanie obiektu javascript EventListener raz?
Odpowiedz
jeśli owinąć kod w funkcji, po prostu wywołanie funkcji na stronie obciążenia
edytowane dodać przykład:
wiem co to wydarzenie jest ale oto przykład:
<a ..onclick='someFunction()'>click</a>
<script type='text/javascript'>
function someFunction() {
// do whatever
}
// call the function
someFunction();
</script>
jeśli potrzebujesz funkcji do określonego kontekstu, możesz użyć metody proxy (jQuery) http://api.jquery.com/jQuery.proxy/ – KOGI
Jeśli dobrze rozumiem twoje pytanie, chcesz zająć się tylko jednym wydarzeniem naraz (jeśli zdarzenie jest uruchamiane wielokrotnie w krótkim odstępie czasu, chcesz obsłużyć tylko jedno z nich), to po zakończeniu obsługi będziesz nadal słuchać więcej wydarzeń. Poprawny?
jQuery ma metoda A .one() api.jquery.com/one
Zajmuje tylko zdarzenie raz, ale jeśli ponownie powiązać zdarzenie w uchwycie, to będzie działać jak chcesz.
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);
To pozwoli Ci ogień clickFunction raz, jak magia zamknięcia niech removeEventListener znaleźć clickFunction.
Nie trzeba używać biblioteki, aby uzyskać proste czynności.
To szybko staje się problemem, jeśli musisz użyć tego wzoru więcej niż dwa razy w jednym kodzie. Jest to bardzo częste w kontekstach animacji css, gdzie masz animację "przejście haseł, ustaw zmianę, spraw, aby przejście było usuwane" i często musisz ją łańcuchować. Wzór podobny do http://hastebin.com/ikixonajuk.coffee jest o wiele łatwiejszy w utrzymaniu. W NodeJS jest to po prostu "raz". – Dmitry
1. W 2011 r., Kiedy odpowiedź została pierwotnie opublikowana, raz była niedostępna. 2. To pytanie implementacyjne po stronie klienta w oryginalnym pytaniu, więc nodejs nie jest pomocne 3. Twój skrypt do kawy jest zasadniczo tym samym pomysłem z niewielkimi modyfikacjami. – Jlam
jest już dostępny w przeglądarce lub czy wciąż musimy go wymyślić/użyć do tego celu rozbudowanych bibliotek zewnętrznych? – Dmitry
- 1. Jak wymusić wykonanie maven MOJO tylko raz pod koniec kompilacji?
- 2. jak dodać obiekt eventListener do obiektu w javascript, który będzie uruchamiany podczas manipulowania obiektem?
- 3. JavaScript skrypt blok wykonanie
- 4. Jak wymusić usunięcie obiektu Pythona?
- 5. zdarzenie JavaScript zamówienie koparki wykonanie
- 6. Callback/Command vs. EventListener/Observer Pattern
- 7. Wykonanie kodu Javascript w szablonie kierownicy
- 8. wykonanie JavaScript failed połączony mongoHQ shell
- 9. Wykonanie klienta JavaScript po wywołaniu funkcji RadAjax
- 10. warunkowo wykonanie JavaScript w Razor widzenia
- 11. Jak wymusić zdarzenie blur w JavaScript?
- 12. Czy istnieje sposób przekonwertowania obiektu Ember do zwykłego obiektu javascript?
- 13. Zdarzenia wielokrotnego zdarzenia javascript wielokrotnego zdarzenia raz
- 14. Tworzenie JavaScript API po raz pierwszy
- 15. Aktualizacja właściwości obiektu javascript?
- 16. Typ JavaScript obiektu niestandardowego
- 17. JavaScript - budowa obiektu JSON
- 18. javascript: ustawienie właściwości obiektu
- 19. zrozumienie obiektu obietnicy javascript
- 20. Porównanie obiektu daty JavaScript
- 21. Prototyp obiektu JavaScript Poisoning
- 22. Javascript - inicjator obiektu?
- 23. JavaScript - Zalety literału obiektu
- 24. JavaScript właściwość obiektu cytuje
- 25. Identyfikator obiektu JavaScript
- 26. Usuwanie pojedynczego obiektu z obiektu JavaScript
- 27. Wykonanie zrzutu ekranu obiektu Flash za pomocą Selenium z Webdriverem
- 28. Scala: Jak wymusić zawijanie liczby całkowitej jako obiektu?
- 29. Jak wymusić wyrzucenie śmieci z obiektu, którego nie można usunąć?
- 30. Dodaj obiekt JavaScript do obiektu JavaScript
"bez warunku będącego prawdą" ... jaki stan? Jeśli raz wystrzeli, to posłuchaj dalej, a potem prawdopodobnie strzelaj ponownie, a potem ... nie strzela raz. Chyba że masz na myśli, że chcesz przetwarzać tylko 1 wydarzenie na raz (nie wiele jednoczesnych wydarzeń)? – KOGI
Czy korzystasz z architektury javascript? Myślę, że w ExtJS jest to możliwe. W jQuery może też. – Marc
jQuery ma metodę .one(), ale nie jestem pewien, czy jest to dokładnie to, czego szukasz. Chociaż można po prostu ponownie powiązać zdarzenie w module obsługi. To spowoduje brak obsługi zdarzeń symultanicznych, a następnie po zakończeniu obsługi, zacznij ponownie słuchać zdarzenia. http://api.jquery.com/one/ – KOGI