2012-06-19 95 views
0

我想比較jQuery和JavaScript之間在項目中的差異,但我似乎無法弄清楚如何重寫一個函數,因爲我不知道我應該如何引用一個jQuery對象。我串聯一個字符串作爲AJAX參數傳遞。這裏是JavaScript:jQuery等價的JavaScript函數

function getSelectValues(select) { 
    var values = ""; 
    var sep = ""; 
    for(var i = 0; i < select.length; i++) { 
    if (select.options[i].selected) { 
     values += sep + (select.options[i].value); 
     sep = ", "; 
    } 
    } 
    return values; 
} 

我想下面可能是jQuery的等價,傳遞$(本),但我似乎無法得到它的工作。如果沒有選擇任何內容,我希望它返回空字符串,但是它返回null。

function getSelectValues(select) { 
    var values = ""; 
    var sep = ""; 
    $("option:selected", select).each(function(){ 
    values += sep + ($(this.val())); 
    sep = ", "; 
    }); 
    return values; 
} 

我也試過:

$(select).each(function(){ 
    $("option:selected", this).each(function(){ 
    values += sep + ($(this.val())); 
    sep = ", "; 
    }); 
}); 

這也不能工作。

回答

1

對於select元件$(select).val()返回選定值(對於單選擇)或用於多選擇一個陣列或null。我從這個問題假設你有一個多選,所以你可能想要:

var vals = $(select).val(); 
return vals ? vals.join(', ') : ""; 
+0

謝謝,這對我很好。 – Risu

0

當您使用each時,this是原始HTML元素。在調用jQuery方法之前,您需要使用jQuery進行封裝。

2

只需可以使用.val()用於選擇與多個選項接通:

.val()的方法主要用於獲得形式元素,如輸入,選擇和textarea的值。在<select multiple="multiple">元素的情況下,.val()方法返回一個包含每個選定選項的數組;如果未選擇任何選項,則返回null。

http://api.jquery.com/val/

+0

該OP不希望'null'被返回,而是一個空字符串。 – Zuul

0

你沒看過任何文件或tutorials,是嗎?

$.extend({ 
    myFunc : function(someArg) { 
     /* …function code… */ 
    } 
}); 
$.myFunc(args); 

參見:http://jquery-howto.blogspot.de/2009/11/create-callback-functions-for-your.html

+0

謝謝,我感謝您的反饋。我從來沒有搜索插件,因爲我沒有構建插件,所以我從來沒有遇到過你建議的教程。 – Risu

+0

@Risu這不僅與插件有關,你可以通過設置「jQuery方式」功能完成不同的事情。我只是通過搜索「jquery +函數」來找到該教程。你正在用自己的函數來擴展jQuery本身,使用這種方式。你也可以擴展你自己的擴展... – feeela

相關問題