0

我试图在一个项目中比较 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 = ", ";
  });
});

那也没有用。

4

4 回答 4

2

您只需.val()打开多个选项即可使用 for select:

.val()方法主要用于获取input、select、textarea等表单元素的值。在<select multiple="multiple">元素的情况下,该.val()方法返回一个包含每个选定选项的数组;如果未选择任何选项,则返回 null。

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

于 2012-06-19T19:49:47.703 回答
1

对于select元素$(select).val()返回选定的值(对于单选)或数组null或多选。我假设你有一个多选的问题,所以你可能想要:

var vals = $(select).val();
return vals ? vals.join(', ') : "";
于 2012-06-19T19:57:10.407 回答
0

当你使用each,this是原始的 HTML 元素。在调用 jQuery 方法之前,您需要包装 jQuery。

于 2012-06-19T19:49:03.663 回答
0

您没有阅读任何文档或教程,是吗?

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

请参阅:http: //jquery-howto.blogspot.de/2009/11/create-callback-functions-for-your.html

于 2012-06-19T19:52:54.293 回答