0

すべて同じプレフィックスを使用するボックスがいくつか<select>ありますが、基本的に作業を行うために再帰関数を設定したいと思います。

$('[id^="by_"]').change(function(e)
            {
                var elem = e;
                console.log(e.value);
            });

このコードに基づいて、私の意図はかなり明確ですか?私は正しい方向に進んでいますか?

コンソールが印刷されます:undefined

4

4 に答える 4

2

あなたは正しい方向に進んでいると思います。使用しているセレクターは「by_」のプレフィックスと一致し、変更イベントをそれらすべてにバインドしています。必ずこれを入れてください$(document).ready。このコードに問題がありますか?eパラメータを使用する代わりにthis、関数内で要素を参照し、$(this)そのjQueryオブジェクトを取得するだけです。したがって、値を取得するには、次を使用します。

this.value
// or
$(this).val()

(などは無視してください。ただし、必要になるたびにjQueryオブジェクトを再作成する代わりに、そのようなオブジェクトを参照できるように格納することは悪い考えではありませんeelem$(this)elem

jQueryでイベントへのコールバックを使用する場合、コールバックの(最初の)パラメーターは、event発生したイベントに関する多くのことを説明するオブジェクト(http://api.jquery.com/category/events/event-object/)であり、要素を保持しない-それthisが目的です!

于 2012-10-18T16:37:15.853 に答える
1

evalueコード内にプロパティを持たないイベントオブジェクトがある場合は、this代わりに次を使用する必要があります。

$('[id^="by_"]').change(function(e) {
     var elem = this;
     console.log(this.value);
});

または、eventオブジェクトを使用する場合は、targetプロパティを使用できます。

e.target.value
于 2012-10-18T16:37:30.203 に答える
0

すでにjQueryを使用しているので、次のようなものを使用してみませんか。

$('[id^="by_"]').change(function(e)
{
    var $elem = $( this );
    console.log( $elem.val() );
});
于 2012-10-18T16:37:07.000 に答える
0

それはもっとそのようなものではありませんか:

$('[id^="by_"]').change(function()
            {
                console.log($('option:selected',this).val());
            });
​

jsfiddle

于 2012-10-18T16:41:50.140 に答える