【Vue】对v-for渲染出来的进行单独控制解决方案

238 阅读1分钟

解决思路:

如果要对v-for渲染出来的组件进行单独DOM操作,我们可以使用:id标签为元素绑定一个动态的id,这样就能获取到每一个v-for渲染出来的组件的元素,比如为父元素绑定:id="item.departTiltle",那么就可以通过

         const deptId = event.currentTarget.parentNode.id
         const dataTab = document.querySelector('#'+deptId)
         const dataBar =dataTab.querySelector('.data_bar')
         ...

获取到父元素,以及子元素的值,可以进行后续的单独操作

template代码如下:

   <div class="tab" :class="thisIndex === index ? 'tab_spread' : ''">
                        <!-- 日期导航栏 -->
                        <div class="date_tab" :id="'date_tab_' + item.departTiltle">
                            <div class="left_button" @click="scrollLeft"><van-icon name="arrow-left" /></div>
                            <div class="data_bar">
                                <div class="data_button" v-for="(date, dateIndex) in currentDate" :key="date.day"
                                    @click="dateClick(index, dateIndex)">
                                    <div class="week">{{ date.week }}</div>
                                    <div :class="{ day_active: selectedIndex[index] === dateIndex }" class="day">{{ date.day
                                    }}
                                        <span class="month">{{ date.month }}月</span>
                                    </div>

                                </div>

                            </div>
                            <div class="right_button" @click="scrollRight"><van-icon name="arrow" /></div>
                        </div>