本文摘自PHP中文网,作者尚,侵删。

Layui中内置了jquery
只有你所使用的模块有依赖到它,它才会加载,并且如果你的页面已经script引入了jquery,它并不会重复加载。内置的jquery模块去除了全局的$和jQuery。
这是layui文档中的描述,它内置了jq,但是去除了全局的$和jQuery对象,也就是在window的全局对外接口被删除了。
拖拽组件的实现
假设siam.js是一个扩展,里面提供了一个类似这样的方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
这就是一些传统jq扩展的实现原理,对于你调用的dom,它会继续处理操作,如本文开始说的,我使用的是拖拽组件,扩展会通过这样子的对外接口 将dom处理为可以拖拽的,并且带有其他事件的元素。
问题冲突
以上两点是问题的基础补充,在layui中,去除了全局的$和Jquery对象,默认扩展中有以下代码
1 2 3 |
|
在最后面,它依赖加载window.Jquery对象,window对象,document对象
传递到上面的闭包中
对应$, window, document, undefined(因为没有传递 所以也一样)
所以导致闭包中使用的$是没有值的,一加载这个扩展就报错
1 2 3 |
|
测试过单独引入jq文件也解决不了问题,(我使用的模板加载顺序的原因,先加载了layui内置的jq)
layui自定义模块
这是官网的介绍
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
我们可以使用layui自定义模块的方法,将layui的其他模块传递进来,使扩展能操作layui中的jq对象
1 2 3 4 5 6 7 8 9 10 |
|
使用
1 2 3 4 5 6 7 |
|
注意,此篇文章并不是通用方法,只是简单阐述了我解决这个问题的思路和方案,可以参考学习。
更多layui框架知识请关注layui框架教程。
以上就是改造传统jquery扩展为layui模块方法介绍的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
更多相关阅读请进入《layui》频道 >>

Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者