作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面是 JQueryTools 的一个函数,我以前从未见过以下定义,也不明白它的目的是什么:
(function (b) { ....})(jQuery);
为什么在函数定义周围用圆括号()括起来,为什么在它后面写上(jQuery)?这具体是做什么的。从我的 Angular 来看(jQuery)根本没有任何功能?我在哪里可以了解有关此语法和用途的更多信息?
非常感谢。
弗兰克
(function(b) {
b.fn.wheel = function(e) {
return this[e ? "bind" : "trigger"]("wheel", e)
};
b.event.special.wheel = {
setup : function() {
b.event.add(this, d, c, {})
},
teardown : function() {
b.event.remove(this, d, c)
}
};
var d = !b.browser.mozilla ? "mousewheel" : "DOMMouseScroll"
+ (b.browser.version < "1.9" ? " mousemove" : "");
function c(e) {
switch (e.type) {
case "mousemove":
return b.extend(e.data, {
clientX : e.clientX,
clientY : e.clientY,
pageX : e.pageX,
pageY : e.pageY
});
case "DOMMouseScroll":
b.extend(e, e.data);
e.delta = -e.detail / 3;
break;
case "mousewheel":
e.delta = e.wheelDelta / 120;
break
}
e.type = "wheel";
return b.event.handle.call(this, e, e.delta)
}
var a = b.tools.scrollable;
a.plugins = a.plugins || {};
a.plugins.mousewheel = {
version : "1.0.1",
conf : {
api : false,
speed : 50
}
};
b.fn.mousewheel = function(f) {
var g = b.extend( {}, a.plugins.mousewheel.conf), e;
if (typeof f == "number") {
f = {
speed : f
}
}
f = b.extend(g, f);
this.each(function() {
var h = b(this).scrollable();
if (h) {
e = h
}
h.getRoot().wheel(function(i, j) {
h.move(j < 0 ? 1 : -1, f.speed || 50);
return false
})
});
return f.api ? e : this
}
})(jQuery);
最佳答案
它内联定义一个匿名函数,然后立即调用该函数,并传入 jQuery
参数。
本质上等同于
function anonymous(b) {
...
}
anonymous(jQuery);
除了它有几个优点/差异:
事实上,如果您熟悉的话,其优点、缺点和推理类似于 Java 中的匿名内部类。
函数定义周围使用方括号的原因仅仅是因为 Javascript 中标记绑定(bind)方式的优先级;它们需要将函数定义与其参数分开。如果没有它们,代码在语法上就不会正确。
关于JavaScript/JQuery = 奇怪的函数定义,从未见过的语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2011761/
背景 我最近在 merge 期间遇到了一个意外未 merge 的文档文件的问题。 无论出于何种原因,我搞砸了 merge 并有效地删除了文件(和其他几个文件),因为我忘记了它们的存在。 现在我想查看我
我在我的网站上使用旧的 mysql 版本和 php 版本 4。 我的表结构: | orders_status_history_id | orders_id | orders_status_id |
我是一名优秀的程序员,十分优秀!