我正在尝试比较项目中jQuery和JavaScript之间的差异,但我似乎无法弄清楚如何重写一个函数,因为我不确定我应该如何引用jQuery对象。我将一个字符串连接起来作为AJAX参数传递。这是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的等价物,传入$(this),但我似乎无法让它工作。如果没有选择任何内容,我希望它返回空字符串,但它会返回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 = ", ";
});
});
这也不起作用。
答案 0 :(得分:2)
您可以使用.val()
进行选项选项多次启用:
.val()
方法主要用于获取表单元素的值,例如input,select和textarea。对于<select multiple="multiple">
元素,.val()
方法返回包含每个选定选项的数组;如果未选择任何选项,则返回null。
答案 1 :(得分:1)
对于select
元素$(select).val()
,返回所选值(对于单选)或数组或null
以进行多选。我假设你有一个多选的问题,所以你可能想要:
var vals = $(select).val();
return vals ? vals.join(', ') : "";
答案 2 :(得分:0)
使用each
时,this
是原始HTML元素。在调用jQuery方法之前,需要包装jQuery。
答案 3 :(得分:0)
您没有阅读任何文档或tutorials,是吗?
$.extend({
myFunc : function( someArg ) {
/* …function code… */
}
});
$.myFunc( args );
请参阅:http://jquery-howto.blogspot.de/2009/11/create-callback-functions-for-your.html