1

我有一个表格,其中某些问题有css与之相关的特殊类别。现在document.ready,我可以$('.cssclassname').on通过调用获取一些数据ajax并在该类行中显示返回的数据。

返回的组件之一是一个按钮,单击它会弹出jQuery ModalPopup 并在我的 中获取数据$('.cssclassname').on,我附加了我的 ModalPopup 事件,以便ModalPopup通过该按钮单击正常工作。

现在我面临的问题是,有时,我的页面上可以有 3-4 个按钮,每次单击 1 个按钮时,打开 modalpopup 的代码运行 x 次(其中 x 是按钮数)。我认为问题在于 modalpopup 具有相同的类,并且由于 x 个按钮,我附加相同的事件 x 次。

他们有什么方法可以解决这个问题,我在每次页面加载时只附加一次特定的事件函数。

我对解释这个问题有点困惑,但让我知道任何人都可以帮助我或需要更多的澄清。

谢谢

4

2 回答 2

1

据我了解,您有两种选择:

  • .off()在使用(奇怪)重新绑定之前取消绑定事件
  • 将委托与 .on() 一起使用:

    $(document).on("click", ".className", function(){});

于 2013-05-31T20:16:21.543 回答
0

最简单的方法是向所有具有此行为的按钮添加一个类并一次性绑定它们。

 <button id='modalTrigger1' class='modelPopupTrigger'>Click</button>
 <button id='modalTrigger2' class='modelPopupTrigger'>Click</button>
 <button id='modalTrigger3' class='modelPopupTrigger'>Click</button>

然后在 JS

 $(function(){
      $(document).on("click", "button.modelPopupTrigger", function(){..handler..});
 });

或者,您可以将函数分配给变量,重新使用该函数进行绑定

 $(function(){
      var modelHandler = function(){... handler...};

      $("#button1").on("click", modelHandler);
      $("#button2").on("click", modelHandler);
 });
于 2013-05-31T20:14:59.740 回答