Mixin for JQuery选择器

时间:2012-12-10 16:48:09

标签: javascript jquery

是否可以为jQuery选择器创建一个mixin(请注意,我不需要插件,它们对我正在做的事情来说太笨重了)?

这是我要完成的任务:

  // Given a div I need to paint it with green for which...
  var $container = $("#id001");

  // current solution
  var do = function(e) {

     var container = e.container;
     container.css("backgroudColor", "green");
  };

  do({ container: $container }); // call


  // desired solution
  var do**Mixin** = function(e){
     e.css("backgroudColor", "green");
  };

  container.do(); // call

3 个答案:

答案 0 :(得分:4)

我知道你说你不需要插件,但是你需要的插件非常简单:

function($){
    $.fn.makeItGreen = function(){
        return this.each(function() {
            this.css({
                'background-color': 'green'
            });
        });
    }
)(jQuery));

使用:

$(yourSelector).makeItGreen();

未经测试,但......非常确定它应该按原样运行。

小提琴(由Jamiec提供):

http://jsfiddle.net/mPu6X/

答案 1 :(得分:3)

您可以制作自定义事件:

$('selector').on('changeToGreen', function(){
    $(this).css("backgroudColor", "green");
});

“做”它:

$('selector').trigger('changeToGreen');

答案 2 :(得分:3)

你正在寻找这样的东西吗? http://jsfiddle.net/WDmjS/

​jQuery.prototype.do = function(){
    this.css("background-color","green");
    return this;
};

$(".mydiv").do();

写得更简洁:

​$.fn.do = function(){
    return this.css("background-color","green");
};