2011-06-02 20 views
0

如果我被原型而不是jQuery所困擾,但我喜歡jQuery的鏈式能力,是否有一些缺點可以通過以下方式爲CSS選擇器提供該功能?製作Prototype的CSS選擇器可鏈接

function r(f) { 
    return function() { 
    var args = [];  
    for(var i = 0; i < arguments.length; i++) { 
     args.push(arguments[i]); 
    } 
    this.each(function(e) { 
     if (e && (typeof e[f] == 'function' || typeof e[f] == 'object')) 
     e[f].apply(e, args); 
    }); 
    return this; 
    } 
} 

function om(p1, p2) { 
    for(prop in p1) { 
    if(p1.hasOwnProperty(prop)){   
     p2[prop] = r(prop); 
    } 
    } 
} 

om(Element.Methods, Array.prototype); 

有一些潛在的改進/增強。但是有什麼真的錯誤的代碼或我完全錯過了什麼嗎?

由於使用這段代碼的結果,現在我可以做以下...

$$('.something').html('blah').show(); 

一個例子:在的Prototype.js http://jsbin.com/olojo5/10/edit

回答

1

標準的方式做「鏈」是使用「each」顯式迭代由選擇器返回的元素數組。例如:

$$(".something").each(function(e){e.update("foo").show();}); 

這就是說,我認爲你的代碼沒有錯,只要它符合你的編碼風格!