【发布时间】:2021-12-02 20:11:36
【问题描述】:
我在 Vuejs 上创建了一个自定义日期时间选择器组件,并使用 jQuery 将父 div 滚动到所选数字。
由于我在一个页面中多次使用此日期时间选择器组件,因此 jQuery 只会正确影响页面上使用的第一个组件!
这是 vueJs 上日期时间选择器组件的一部分:
<div class="date-section-holder">
<div class="years">
<p v-for="year in years" :class="{'active': selectedYear === year}" @click="selectedYear = year">{{ year }}</p>
</div>
<div class="months">
<p v-for="month in months" :class="{'active': selectedMonth === month}" @click="selectedMonth = month">{{ month }}</p>
</div>
<div class="days">
<p v-for="day in days" :class="{'active' : selectedDay === day}" @click="selectedDay = day"> {{ day }}</p>
</div>
</div>
这只是 jQuery 的一部分:
$('.days p').on('click', function() {
$($(this).parent()).scrollTop($($(this).parent()).scrollTop() + $(this).position().top - 150);
});
还有 jQuery 在打开时对齐所有字段的部分,仅影响使用的第一个组件:
$(document).ready(function() {
$('.days').scrollTop($('.days').scrollTop() + $($('.days').find('.active')).position().top - 150);
$('.years').scrollTop($('.years').scrollTop() + $($('.years').find('.active')).position().top - 150);
$('.months').scrollTop($('.months').scrollTop() + $($('.months').find('.active')).position().top - 150);
})
【问题讨论】:
-
不要同时使用 jQuery 和 Vue js。
-
你能控制你的 Vue 组件的滚动行为吗? jQuery 增加了一个新的复杂程度,这不是一个很好的设计模式。 Vue 内置了点击处理程序。