Skip to content

Instantly share code, notes, and snippets.

@josher19
Created December 3, 2012 07:59
Show Gist options
  • Save josher19/4193516 to your computer and use it in GitHub Desktop.
Save josher19/4193516 to your computer and use it in GitHub Desktop.
Plugin to allow use of RxJS in jQuery
jQuery.fn.toObservable = jQuery.fn.toObservable || function (eventName, action) {
var dom = this;
return Rx.Observable.create(function(observer) {
var handler = function(ev) {
if (action !== undefined) {
action(ev);
}
else {
if (ev && ev.preventDefault) {
ev.preventDefault();
}
}
observer.onNext(ev);
};
dom.bind(eventName, handler);
return function() {
dom.unbind(eventName, handler);
};
});
}
@josher19
Copy link
Author

josher19 commented Dec 3, 2012

// Example Usage:

test('listening to events', function() {
var received = '';
var subscription =
$(document)
.toObservable('foo')
.subscribe(function(e) { received += e.payload; });

$(document).trigger({ type: 'bar', payload : 'M'});
$(document).trigger({ type: 'foo', payload : 'A'});
$(document).trigger({ type: 'foo', payload : 'T'});
subscription.dispose();
$(document).trigger({ type: 'foo', payload : 'T'});

equals(received, 'AT');

});

// based on:
// https://github.com/mattpodwysocki/RxJSKoans/blob/master/koans/Answers/lesson4-Events.js

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment