【发布时间】:2018-12-18 16:40:53
【问题描述】:
我需要帮助 :) 我试图在其他主题中找到解决方案,但无法找到,所以如果有任何问题,我很抱歉。我是新手。
所以,问题。我有一堆div。我需要为每个 div 添加“活动”类,然后在 2 秒内将其删除。
我有解决方案,但我的主人说“从”然后“的”一点都不好。任何想法如何以其他方式完成?先感谢您!
const boxes = document.querySelectorAll('.box')
const innerBoxes = Array.from(boxes);
const clickOnDiv = fromEvent(innerBoxes, 'click')
.pipe(
map(event => {
let notActiveElements = [];
for ( let i=0; i < innerBoxes.length; i++) {
if(innerBoxes[i] != event.target) {
notActiveElements.push(innerBoxes[i])
}
}
return notActiveElements
}),
concatMap(element => from(element)
.pipe(
concatMap(element => of(element)
.pipe(
tap(el => console.log(el)),
delay(2000)
)),
tap(item => {
item.classList.add('active')
}),
delay(2000),
tap(item => {
item.classList.remove('active')
})
))
)
clickOnDiv.subscribe()
【问题讨论】:
-
innerBoxes 是 EVENTS 还是 HTML 元素?
-
而不是fromEvent使用from。
-
innerBoxes - 来自盒子的数组,分配给 div 的类。只是为了更容易循环。所以基本事件是点击,抱歉没有马上说。所以,点击一个 div - 它应该是非活动的,其他的应该是活动的类。在获得非活动元素后 - 我正在使用 notActiveElements 数组
标签: rxjs observable rxjs-lettable-operators