锋利的jQuery第十二期
- 2020 年 4 月 10 日
- 筆記
又到了我们说jQuery的日子了,上一期小编提到了一个符的控制权的问题,刚开始以为是自己对这个问题理解不深,误以为很简单,所以没有马上搞出来。但是解决了之后发现。。。其实就是很简单,只是因为是在原有的基础上进行修改而破坏了一些原有的js的功能结构,导致问题的出现。那么今天咱们今天就来说一说符的控制问题。
首先,这个问题的出现是因为除了jQuery框架中使用符以外,还有许多封装的js库都可能使用这一符号,大部分就是jQuery本身相关的一些库,即jQuery.xxx.js,这些库通常都会使用符号,当我们同时使用两个库的时候就会出现冲突,会报出 is not a function类似的错误,那比较简单的方法就是使用自定义的快捷方式。无论哪一种解决方案,我们都要解释一下jQuery.noConflict();这句代码,本身的含义就是移交符的控制权。即该行代码之后的部分不再由jQuery控制符,交给另外的库来处理。之前交给大家的方法就是使用自定义的快捷方式var j = jQuery.noConflict();这样一来,j和就都可以等价于jQuery,在我们移交控制权之后,符号受另外一个库的控制,j依然等价于jQuery,无论是顺序的执行结构还是两个库存在穿插使用的结构,这种做法都是比较灵活的,我们可以在一开始就将控制权移交出去,然后用到jQuery的部分我们使用快捷方式j,另外库的部分使用。
但是小编在原有的项目中,看到了另外一种高明的做法,不愧为百度的前端工程师写出的代码。具体做法就是将本js文件需要用jQuery获取的对象先全部获取,存放到js的数组中,然后在使用的时候直接调用预先存好的对象,这样就能解决很多问题,无论是元素属性值的获取还是事件的绑定都没有问题,我们只需要对绑定事件的方法体的内容进行$符的处理。
希望大家在以后遇到类似问题的时候本文章能够有所帮助。