Vue.js列表渲染绑定jQuery插件的正确姿势
发布时间 - 2026-01-11 02:06:43 点击率:次使用v-for绑定列表时,有时候需要绑定如select2之类的jQuery插件。

需要在Vue根据数组内容生成dom元素之后,去找到该dom元素,然后 $().xxx绑定jQuery插件。
之前使用Vue.nextTick方法,在一次dom更新以后执行延迟回调,渲染jQuery插件。
然而这并不是一种很好的方式,有时候难以确定dom元素更新是否是我们需要关注的那个。
在列表中渲染Jquery插件的正确姿势,是使用自定义指令。自定义指令提供了一些钩子函数,可以准确的监听到dom元素与数据的绑定周期。
钩子函数
指令定义函数提供了几个钩子函数(可选):
bind: 只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作。
inserted: 被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于 document 中)。
update: 被绑定元素所在的模板更新时调用,而不论绑定值是否变化。通过比较更新前后的绑定值,可以忽略不必要的模板更新(详细的钩子函数参数见下)。
componentUpdated: 被绑定元素所在模板完成一次更新周期时调用。
unbind: 只调用一次, 指令与元素解绑时调用。
接下来我们来看一下钩子函数的参数 (包括 el,binding,vnode,oldVnode) 。
钩子函数参数
钩子函数被赋予了以下参数:
el: 指令所绑定的元素,可以用来直接操作 DOM 。
binding: 一个对象,包含以下属性:
- name: 指令名,不包括 v- 前缀。
- value: 指令的绑定值, 例如: v-my-directive="1 + 1", value 的值是 2。
- oldValue: 指令绑定的前一个值,仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。
- expression: 绑定值的字符串形式。 例如 v-my-directive="1 + 1" , expression 的值是 "1 + 1"。
- arg: 传给指令的参数。例如 v-my-directive:foo, arg 的值是 "foo"。
- modifiers: 一个包含修饰符的对象。 例如: v-my-directive.foo.bar, 修饰符对象 modifiers 的值是 { foo: true, bar: true }。
vnode: Vue 编译生成的虚拟节点,查阅 VNode API 了解更多详情。
oldVnode: 上一个虚拟节点,仅在 update 和 componentUpdated 钩子中可用。
例子
<table id="testTable">
<tr v-for="(el, lineIndex) in lines" v-line-inserted="lineIndex" >
<td>
<input name="bindSelect2" />
<td>
</tr>
</table>
function renderLines(el, lineIndex){
//渲染select2
$("testTable tr").eq(lineIndex).select2({...});
}
Vue.directive('line-inserted', {
inserted: function (el, binding) {
var lineIndex = binding.value;
renderLines(el, lineIndex);
}
});
详情参见Vue官方文档自定义指令
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Vue.js
# 列表渲染
# jQuery
# Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)
# VUEJS实战之构建基础并渲染出列表(1)
# 深入理解Vue 的条件渲染和列表渲染
# 详解vuejs之v-for列表渲染
# vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
# Vue列表页渲染优化详解
# Vue.JS入门教程之列表渲染
# Vue.js学习教程之列表渲染详解
# Vue 监听列表item渲染事件方法
# Vue前端高效开发之列表渲染指令
# 绑定
# 自定义
# 定值
# 几个
# 很好
# 修饰符
# 去找
# 可选
# 不包括
# 回调
# 大家多多
# 到该
# 可以用来
# 这并
# 不是一种
# 文档
# 列表中
# 赋予了
# color
# function
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速搭建自助建站会员专属系统?
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
,怎么在广州志愿者网站注册?
如何用y主机助手快速搭建网站?
JS弹性运动实现方法分析
浅谈javascript alert和confirm的美化
电商网站制作价格怎么算,网上拍卖流程以及规则?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
,在苏州找工作,上哪个网站比较好?
Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件
公司网站制作需要多少钱,找人做公司网站需要多少钱?
网站建设整体流程解析,建站其实很容易!
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
JS去除重复并统计数量的实现方法
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
如何在云服务器上快速搭建个人网站?
今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
如何用PHP快速搭建CMS系统?
如何彻底卸载建站之星软件?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
如何快速生成专业多端适配建站电话?
javascript如何操作浏览器历史记录_怎样实现无刷新导航
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
Thinkphp 中 distinct 的用法解析
详解MySQL数据库的安装与密码配置
Python进程池调度策略_任务分发说明【指导】
利用vue写todolist单页应用
如何快速生成ASP一键建站模板并优化安全性?
Laravel如何使用Gate和Policy进行授权?(权限控制)
Laravel如何使用.env文件管理环境变量?(最佳实践)
Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
如何在香港免费服务器上快速搭建网站?
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
Android使用GridView实现日历的简单功能
Laravel如何记录自定义日志?(Log频道配置)
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
如何在搬瓦工VPS快速搭建网站?
google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
Laravel如何创建自定义中间件?(Middleware代码示例)
Laravel如何为API生成Swagger或OpenAPI文档
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤

