2014-01-24 26 views
1

我试图在JQuery上创建一个函数来使事情变得简单...在元素上添加元素。这是代码,但它不工作追加函数在自定义JQuery函数上无所作为

(function ($) { 
    $.fn.dataProvider = function (array) { 
     console.log(this); 
     console.log(array); 
     $.each(array, function (index, value) { 
      $(this[0]).append("<option value = '" + index + "' >" + value + "</option>"); 
     }); 
    }; 
})(jQuery); 

但是,这项工程!

$.each(array, function (index, value) { 
    $(this[0]).append("<option value = '" + index + "' >" + value + "</option>"); 
}); 

我不明白为什么...有人能帮助我吗?

+0

检查您的萤火虫首先是什么错误 –

+0

这不是给我的错误,只是append()函数什么都不做 – GunBlade

+0

一个新函数创建一个新的作用域,即使是$ .each()的回调函数 – adeneo

回答

1

如果你想创建一个插件,你需要为了维持chainability返回this元素:插件chainability的

LIVE DEMO

(function($) { 
    $.fn.dataProvider = function(arr) { 

    var that = this; 
    var opts = ""; 

    return that.each(function(){ 
     for(var i=0; i<arr.length; i++){ 
     opts += "<option value='"+ i +"'>"+ arr[i] +"</option>"; 
     } 
     that.append(opts); // Append only once // Faster! 
    }); 

    }; 
})(jQuery); 

例子:

var arr = ["foo", "bee"]; 
$('#sel').dataProvider(arr).css({color:"red"});