Javascript 使用RxJS Observable更改拖动事件上的css类
嗨,我的目标是使用Observable sequence来监听dragEnter/dragleave事件来更改css类。即:Javascript 使用RxJS Observable更改拖动事件上的css类,javascript,rxjs,observable,Javascript,Rxjs,Observable,嗨,我的目标是使用Observable sequence来监听dragEnter/dragleave事件来更改css类。即: var myDraggableListEl = document.querySelector.... var itemDragIn$ = Rx.Observable.fromEvent(myDraggableListEl, 'dragenter').map((e)=> e.target); var itemDragOut$ = Rx.Observable.fro
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);
基本上,我只想在“dragenter”上添加一个“hover”类,然后在dragleave上删除同一个类
我想知道是否有一种聪明的方法来“合并”这2个,这样订阅就会是这样的:
.subscribe( (boolAdd, className, target ) => {
boolAdd ? target.classlist.add(className): target.classlist.remove(className)
}
也许我只是想得太多了,我只是把这两个观测值分开,但我只是想知道是否有人做到了这一点,或者他们是否有更好的方法。
谢谢 使用
Rx.Observable.merge()
方法完全可以做到这一点
链接:
尽管请考虑以下可能更可读:
// addClass and removeClass are 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');
});
你能添加plunkr吗?@Gary添加了一个JSFIDLE:)我正在尝试使用scroll和click事件进行合并,似乎破坏了代码。
// addClass and removeClass are 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');
});