0

プロジェクトで jQuery と JavaScript の違いを比較しようとしていますが、jQuery オブジェクトを参照する方法がわからないため、1 つの関数を書き直す方法がわかりません。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;
}

以下は $(this) を渡して 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 = ", ";
  });
});

それもうまくいきませんでした。

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

ドキュメントやチュートリアルを読んでいませんでしたか?

$.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 に答える
0

を使用する場合eachthisは生の HTML 要素です。jQuery メソッドを呼び出す前に、jQuery でラップする必要があります。

于 2012-06-19T19:49:03.663 に答える