javascript - Using RxJS Observable to change css class on drag events -
hi goal use observable sequence listen dragenter/dragleave events change css classes. ie :
var mydraggablelistel = document.queryselector.... var itemdragin$ = rx.observable.fromevent(mydraggablelistel, 'dragenter').map((e)=> e.target); var itemdragout$ = rx.observable.fromevent(mydraggablelistel, 'dragleave').map((e)=> e.target);
basically want add 'hover' class on 'dragenter',and remove same class on dragleave.
i wondering if there clever way 'merge' these 2 subscription like:
.subscribe( (booladd, classname, target ) => { booladd ? target.classlist.add(classname): target.classlist.remove(classname) }
maybe im overthinking andi leave 2 observables separate, wondering if had accomplished or if had better way. thanks!
you can totally using rx.observable.merge()
method.
links:
example (here's fiddle):
rx.observable.merge( rx.observable.fromevent($el, 'dragenter').map(function(e) { return { target: e.target, isadd: true, classname: 'dragg' } }), rx.observable.fromevent($el, 'dragleave').map(function(e) { return { target: e.target, isadd: false, classname: 'dragg' } })) .subscribe(function(obj){ if(obj.isadd) { obj.target.classlist.add(obj.classname); } else { obj.target.classlist.remove(obj.classname); } });
although please consider following more readable:
// addclass , removeclass defined somewhere (can represent jquery's functions) rx.observable .fromevent($el, 'dragenter') .subscribe(function(e){ addclass(e.target, 'dragg'); }); rx.observable .fromevent($el, 'dragleave') .subscribe(function(e){ removeclass(e.target, 'dragg'); });
Comments
Post a Comment