0

jQueryイベントselectを実行しようとしています。.change何らかの理由idで、選択の を認識していません。AJAXこれは、select とそのオプションを作成する php ファイルへの別の呼び出しによって構築されます。

<script>
    $(document).ready(function()
    {
        $("#unitselector").on('change', function()
        {
            console.log('made it');
            var unit=$('#unitselector').filter(':selected').val();
            var dataString = {unit:unit};
            console.log(dataString);
            $.ajax({
                type: "POST",
                url: "classes/unit_info.php",
                data: dataString,
                cache: false,
                success: function(html)
                {
                    $('.unitinfo').html(html);
                }
            });
        });
    });
    </script>

関連する PHP:

    echo '<select id="unitselector" name="units">';
while( $row = mysqli_fetch_assoc($result))
{
    $units[] = $row['unit_name'];
    echo '<option value="'.$row['unit_name'].'">'.$row['unit_name'].'</option>';
}
echo '</select>';
4

1 に答える 1

1

It is built through another AJAX call to a php file that creates the select and its options.

つまり、動的に DOM に追加されるため、イベント委任が必要になります。jQuery 1.7+ は、適切にバインドするために .on() メソッドを使用します。

$("#unitselector").on('change', function()

$(document).on('change', '#unitselector', function()

さらに、あなたがやっているように値を取得しようとする理由は本当にありません。this要素の内部にいるため、ネイティブの javascript オブジェクトまたはjQuery オブジェクトを介してアクセスできます$(this)。どちらの方法でも問題なく動作します。

var unit = $(this).val();
//or
var unit = this.value;
于 2013-10-26T23:42:52.710 に答える