下拉列表单击事件 - jQuery

时间:2012-05-23 15:34:40

标签: jquery

我认为对于任何体面的jQuery来说这都是一个非常简单的方法,但是我的页面上有动态生成的下拉列表,我在课堂上设置了一个点击事件,正如预期的那样所有人的点击事件。 select的ID是动态生成的,因此我不能将其用作选择器。我只想激活实际更改的select事件。

我需要在函数中使用所选值的id - 任何人都知道这是怎么做的?

我到目前为止的代码:

$(document).ready(function () {
    $(".boxItem").change(function () {
        var str = $(this).attr('id');
        var num = $(this).val();
        alert(num);
        var url = "/Search/GetBoxChangeInfo";
        var vmData = { json : @Html.Raw(Json.Encode(Model)),
                        id : str,
                        boxNo : num };
        $.post(url, vmData, function (data) {
            $("#column-1").html(data);
        });
    });
});

非常感谢

2 个答案:

答案 0 :(得分:2)

如果它是动态的,你需要委派:

$(document).on('change', '.boxItem', function () {
    var str = this.id;
    var num = this.value;
    ......

this将引用已更改的类.boxitem的select,并且获取ID和值应该按预期工作,也将文档替换为最接近非动态父级的文档!

答案 1 :(得分:1)

$(".boxItem").on("change", function () {

    // to get the value and id of selected option
    var str = $('option:selected', this).attr('id');
    var value = $('option:selected', this).attr('value');

    // or to get value and id of select box use
    var str = this.id; 
    var value = this.value;
    ......
});

如果select是活的,即在DOM准备好之后创建,那么你应该尝试

 $("body").on("change", ".boxItem", function () {

    // to get the value and id of selected option
    var str = $('option:selected', this).attr('id');
    var value = $('option:selected', this).attr('value');

    // or to get value and id of select box use
    var str = this.id; 
    var value = this.value;
    ......
});