javascript - Cross-Listen to multiple events and trigger callback -
i have list of event names need listen stored in array, so:
var events = ['a', 'b'];
now, i'm unsure event triggered first , inconsistent (depends on http requests await) can never safely listen 1 of them. so, need somehow "cross-listen" of them in order trigger original callback.
so idea following:
- create listener a, creates listener b. b's listener triggers callback.
- create listener b, creates listener a. a's listener triggers callback.
so result in 4 listners, (pseudo-code):
var callback = function() { console.log('the callback'); }; event.on('a', function () { event.on('b', callback); }); event.on('b', function () { event.on('a', callback); });
so believe solve issue (there's problem i'm not seeing here though - help!).
the issue is, can make work when there 2 events need listen to. when have 3-4 events want "cross-listen" to? lets have ['a', 'b', 'c', 'd']
. require looping through events. part what's confusing me , i'm not sure how proceed. need register nice combination of events.
this needs done in javascript.
my imagination , logic limited in case. highly appreciated.
i thinking this:
var callback = function() { console.log('the callback'); }; var events = { 'click': false, 'mouseover': false, 'mouseout': false }; for(prop in events) { $('.evt-button').on(prop, function(evt) { if(events[evt.type] === false) { console.log('first ' + evt.type + ' event'); events[evt.type] = true; checkall(); } }); } function checkall() { var anyfalse = false; for(prop in events) { if(events.hasownproperty(prop)) { if(events[prop] === false) { anyfalse = true; break; } } } if(!anyfalse) { callback(); } }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <button class="evt-button">the button</button>
Comments
Post a Comment