【JQuery】扩展 $.val()

开发者 2024-9-14 21:45:07 29 0 来自 中国
一、配景

公司的老项现在端照旧用的jquery,也没有条件引入vue,以是对于一个实体对象的取值和赋值照旧很贫困的:
比方:

1.png
以是想扩展一下$.val()函数
二、目标

在html元素上利用name布局化数据实体,
然后用val获取整个实体,可以正确处置惩罚子对象和数组对象以及多选select。
比方:


三、修改方案

找到$().val的源码;
会用jquery的同学都很清晰,val有2个逻辑,不带参是get,带参是set;
看源码,有一个JQuery.valHooks 对象,假如当前元素可以匹配到则会直接调用valHooks中界说好的get或set方法;
以是只要在这里到场我们界说好的元素和处置惩罚函数就可以了


四、改造Get

先来改造Get

4.png
将盼望处置惩罚的元素全部加进去:

五、改造Set

set方法有一个比较故意思的地方,在数组的操纵中,每次都要能取出数组中的下一个元素,有点类似C#中的IEnumerator
利用时,必要将数组转为 Enumerator 再调用 .next() 方法来获取下一个值;
PS:这里有个特殊环境是 <select multiple>是可以直接用数组赋值的
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-22 01:30, Processed in 0.172411 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表