作者:李长倩63399 | 来源:互联网 | 2024-12-07 10:58
我在使用Vue时遇到一个问题,即尝试通过jQuery在组件挂载后添加点击事件。我将相关代码放在了this.$nextTick
生命周期钩子中。虽然确认这部分代码确实被执行(通过控制台日志验证),但首次加载时点击事件并未生效。只有刷新页面后,点击事件才能正常工作。这让我感到困惑,不知道具体原因是什么。
以下是相关的代码片段:
mounted: function () {
this.$nextTick(function () {
// 确保DOM已更新并可用
console.log('DOM更新完成'); // 日志显示正常
$('.sidebar-nav-sub-title').on('click', function() {
console.log('点击事件触发'); // 需要刷新页面才能生效
$(this).siblings('.sidebar-nav-sub').slideToggle(80)
.end()
.find('.sidebar-nav-sub-ico')
.toggleClass('sidebar-nav-sub-ico-rotate');
});
});
}
根据上述描述,可能的原因是尽管$nextTick
确保了DOM更新后的回调执行,但由于某些延迟加载或异步操作,实际的DOM元素可能尚未准备好。解决方法之一是在确保所有DOM元素都已加载完毕后再绑定事件,或者考虑使用Vue的自定义指令来绑定事件,这样可以更好地与Vue的响应式系统集成。