How does jQuerys $.each() work?
也许标题不好,但这是我的问题:
我正在构建一个框架来了解有关 javascript 的更多信息。我想使用”jQuery”风格。
如何创建一个
1
2 |
$("p").fadeOut(); //() is there
$.each(arr, function(k, v) {…}); //Dropped the (), but HOW? |
这是我想出的,但它不起作用:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$2DC = function(selector) { return new function() { return { circle : function() { //… } } } } $2DC("#id1"); //Work |
但请记住,在 JavaScript 中,您可以将”东西”直接附加到函数中。
1
2 3 4 5 6 |
function foo(){ } foo.blah ="hi"; foo.func = function() { alert("hi"); }; foo.func(); //alerts"hi" |
这就是(概念上)jQuery 的
1
|
jQuery.each = function(someArr, callback) { …
|
所以现在
1
2 |
jQuery.each([1, 2, 3], function(i, val) {
}); |
或更熟悉的
1
2 |
$.each([1, 2, 3], function(i, val) {
}); |
所以对于你的特殊情况,支持:
1
|
$2DC.circle();
|
您必须将
1
2 3 |
$2DC.circle = function(){
// code }; |
函数是 JavaScript 中的对象。因此,它们可以用作变量,就像整数、字符串等一样。
在您的示例中,
在
1
2 |
$2DC.circle = function(){
} |
现在,
1
|
$2DC.circle(); //DONT WORK
|
这不起作用,因为 $2DC 没有任何名称为
其中
如果你定义
1
2 3 |
$2DC.circle = function(){
}; |
你可以使用
可以使用类似这样的方法来实现。
1
2 3 4 5 |
$.fn.each = function (otherparams);
$.each = function (collection, otherparams) { |
将 each 添加为 fn 的属性(它只是 jQuery.prototype 的别名)意味着它可以作为每个 jQuery 集合的方法使用。第二段代码意味着它可以作为参数传入集合中。
应用(和调用)是 javascript 的一些最有用的特性,一旦你习惯了它们。
创建你的基础函数,然后给函数添加方法。
1
2 3 4 5 6 7 8 9 10 11 12 13 |
var f = function(text){ alert(text); } f.fn1 = function(text){ alert(‘fn:’+text); } f.fn2 = function(text){ alert(‘fn2:’+text); } f(‘hi’); //hi; |
你所指的
jQuery 中的
调用
上定义的方法和插件
试试这样:
1
2 3 4 5 6 7 8 9 10 11 |
$2DC = (function(selector)
{ return new function() { return { circle : function() { //… } } } })(); |
这样,$2DC 是函数返回的对象,而不是函数本身。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/268763.html