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

Popular posts from this blog

java - Run spring boot application error: Cannot instantiate interface org.springframework.context.ApplicationListener -

reactjs - React router and this.props.children - how to pass state to this.props.children -

Excel VBA "Microsoft Windows Common Controls 6.0 (SP6)" Location Changes -