mvc下拉更改事件只触发一次?

时间:2010-11-11 06:30:31

标签: javascript jquery asp.net-mvc

我在此下拉列表的更改事件触发的javascript的帮助下提交AjaxForm,并相应地更新div(也包含ddlist)。

  $(function() {
            $('#Page').change(function() {
                alert("testing");
                var value = $(this).val();
                if (value != "<%=Model.CurrentPage%>") {
                    $("#pageJump").click();
                }
            });
        }); 

    <div id = "updateDiv">

    <%=Html.DropDownList("Page", Model.dropDown)%>

</div>

updateDiv正在被一些Ajax更新。 DropDownList正确填充项目,但它只触发上面的javascript事件(在它发布一次之后),而不是第二次。它为什么这样做?

编辑:

 $(function() {
        initPaging();
    });

    function initPaging() {
        alert("TEST");
        initPagingDdl();
    }

    function initPagingDdl() {
        $('#Page').change(function() {
            alert("all");
            var value = $(this).val();
            alert(value);
            if (value != "<%=Model.CurrentPage%>") {
                $("#pageJump").click();
            }
        });
}

在我的AjaxOptions构造函数中,我设置了:

OnComplete = "initPaging"

它仍无法正常工作。它在Ajax帖子之后调用了TEST,所以它正在命中代码,但由于某些原因没有绑定?

1 个答案:

答案 0 :(得分:0)

每当使用AJAX更新updateDiv的内容时,DOM每次都会刷新。我不太确定,但它解除了与其孩子相关的所有事件。因此,您的功能仅执行一次。

您可以使用

  1. 在ajax调用的回调方法中点击事件的绑定或
  2. 将点击事件绑定到

    $('#updateDiv select')。change(function(){    }); //不确定是否可行