采用任何单参数函数并将其链接到另一个函数的最简单方法是什么?
所以这看起来像......
red = function (target) {target.$.style.backgroundColor("red");}
blue = function (target) {target.$.style.backgroundColor("blue");}
body = $("body");
red(body);
#body is now red
makeFunctionChainable(blue);
body.blue()
#body is now blue
答案 0 :(得分:1)
如果我了解您要做的事情,您实际上可以定义对象原型的全局扩展,这样您就可以在任何对象上调用red()
或blue()
。
Object.prototype.red = function()
{
$(this).css('background-color', 'red');
return this;
};
Object.prototype.blue = function()
{
$(this).css('background-color', 'blue');
return this;
};
然后你可以这样使用它:
$('body').red().blue();
我应该注意这是不好的做法,你只想用jQuery元素 相反,你应该为它编写一个jQuery扩展。
答案 1 :(得分:0)
你可以通过返回一些可以链接的东西来进行链接,例如this
var setColors = (function(){
var target = null;
var setTarget = function(t) {
target = t;
return this;
};
var color = function (colorChange) {
target.$.style.backgroundColor(colorChange);
return this;
};
return {setTarget: setTarget, setColor: color};
})();
var body = $("body");
//sets the red than blue immediately
setColors.setTarget(body).setColor('red').setColor('blue');
答案 2 :(得分:0)
只有在function1返回的元素具有function2
时才可以进行链接示例强>
var obj = {
red: function(target) {target.$.style.backgroundColor("red");return this;},
blue: function(target) {target.$.style.backgroundColor("blue");return this;}
};
并使用
obj.red(body).blue(body);