关于多个前端框架中消除$符冲突的疑问
项目中同时使用了jQuery和zepto这两种框架,注意到一段js代码如下:
function slideToggleMenu() {
jQuery(function ($) {
$("#showMenu,.kelelogo").unbind("click");
$("#showMenu,.kelelogo").click(function (e) {
e.preventDefault() || e.stopPropagation();
$("#mainMenu").slideToggle();
});
});
}
前辈解释说这里的$符代表了jQuery,而页面中其余部分的$都代表zepto,请问以下这种结构怎么理解?
jQuery(function($){});
我只知道(function($){}(jQuery))的形式可以消除$符的冲突
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
首先要清楚形参和实参的概念。
然后要知道jQuery这个库里定义了一个函数,名叫
jQuery
。你展示的这段代码就是调用了一次jQuery函数,参数是一个回调函数。这样调用jQuery的话,jQuery就会稍后在执行这个回调函数的时候,传入一个参数,值就是jQuery本身。因此在这个回调函数中,第一个参数就是jQuery本身,也就解决了冲突。
如果你明白了形参的概念,你就会明白这是怎么工作的。并且也会明白为什么下面的代码是对的:
jQuery 本身就有考虑到多库共存, 最简单就是用
var jq = jQuery.noConflict();
如果是插件, 就用