jQuery .change()没有按预期响应

时间:2013-10-26 23:38:38

标签: php jquery html ajax

我有select我正在尝试执行jQuery .change事件。由于某种原因,它无法识别选择的id。它是通过对php文件的另一个AJAX调用构建的,该文件创建了select及其选项。

<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>';

1 个答案:

答案 0 :(得分:1)

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

这意味着它会动态添加到DOM中,因此需要事件委派。 jQuery 1.7+ uses the .on()方法以便正确绑定。

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

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

此外,没有理由尝试像你一样获得价值。你在元素内部,因此可以通过this(本机javascript对象)或$(this)这是一个jQuery对象来访问它,无论哪种方式都可以正常工作。

var unit = $(this).val();
//or
var unit = this.value;