2011-08-06 48 views
0

我想「重建」一小片段:jQuery函數Getvars「重建」

jQuery.fn.getCheckboxVal = function(){ 
    var vals = []; 
    var i = 0; 
    this.each(function(){ 
     vals[i++] = jQuery(this).val(); 
    }); 
    return vals; 
} 

這樣這樣的:

function getvar() { 
     var vals = []; 
    var i = 0; 
    this.each(function(){ 
     vals[i++] = $(this).val(); 
    }); 
    return vals; 
} 

任何人可以幫助獲得「第二」工程? (鏈接到完整片段上方:http://trentrichardson.com/2009/01/08/getting-a-list-of-checkbox-values-with-jquery/

謝謝:)

回答

1

在第一個代碼中,this關鍵字指向您正在調用該方法的jQuery對象,因此您必須將其替換爲jQuery對象在第二個代碼:

function getvar(selector) { 
    var vals = []; 
    var i = 0; 
    $(selector).each(function(){ 
    vals[i++] = $(this).val(); 
    }); 
    return vals; 
} 

用例:

var values = getvar('input:checked'); 

您還可以使用map方法,使其更簡單:

function getvar(selector) { 
    return $(selector).map(function(){ 
    return $(this).val(); 
    }).get(); 
} 
+0

謝謝菲利克斯,也感謝Guffa - 我嘗試**都**和所有看起來不錯:) – spotlr

1

我想,你希望接受元素作爲參數(這裏是jQuery對象)的函數:

function getValues($elements) { 
    return $elements.map(function() { 
     return $(this).val(); 
    }).get(); 
} 

用法:

var values = getValues($('input')); 
+0

感謝菲利克斯也感謝Guffa - 我嘗試**都**和所有看起來不錯:) – spotlr