2014-01-24 27 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"});