为什么jQuery会为ASP.NET列表框重复触发事件?

时间:2013-09-19 17:48:00

标签: javascript jquery asp.net

我在ASP.NET网页表单中有以下代码:

  $(document).ready(function () {

     myListBox_OnChangeHandler();

  });

  function myListBox_OnChangeHandler() {
     $('#<%= myListBox.ClientID %>').change(function () {
        alert('Worked');
     });
  }

这是我的ListBox:

<asp:ListBox ID="myListBox" runat="server" SelectionMode="Multiple" AutoPostBack="True" OnSelectedIndexChanged="myListBox_SelectedIndexChanged" />

将处理程序连接到ListBox的jQuery事件的change实际上有效,但有点好。每次进行新选择时,该方法称为复合次数。例如,单击1,无警报,单击2,2警报,单击3,4警报等。并非此方法中存在alert真实(我也尝试过声明变量和放置断点并移除alert并且它仍然表现相同),但我想确保它有效。

但是,如果我更改了我的ListBox并定义了其onchange客户端事件并将其指向下面的方法,那就可以了:

<asp:ListBox ID="ui_lbxAdUsers" runat="server" SelectionMode="Multiple" AutoPostBack="True" onchange="myListBox_OnChangeHandler();" OnSelectedIndexChanged="myListBox_SelectedIndexChanged" />

...并将JS更改为:

  function myListBox_OnChangeHandler() {
     alert('Worked');
  }

......一切都很完美。我更喜欢通过$(document).ready函数和jQuery以有条理的方式连接我的处理程序,但重复调用是该方法的showstopper。

为什么在ListBox中为每次点击更改使用第一个方法导致方法调用复合次数,但在我声明onchange事件的第二个方法中没有发生控制?

0 个答案:

没有答案