【问题标题】:jQuery change between v.1.4.1 and 1.7.2 impacting tr click eventv.1.4.1 和 1.7.2 之间的 jQuery 更改影响 tr 点击事件
【发布时间】:2012-07-17 23:49:45
【问题描述】:

在我的项目中,我将使用的 jQuery 版本从 1.4.2 更新到了 1.7.2。现在我在处理<tr> 元素的点击事件处理程序时观察到一些意外行为。

多个站点包含第一列中带有单选按钮的表格。所以 HTML 看起来像这样

<table>
  <tbody>
    <tr onclick="selectOnClick(this)">
      <td><input type="radio" .... /></td>
      ......
    </tr>
...

在一个单独的 js 文件中有 JS 函数的定义

function selectOnClick(row) {
  $(row).children('td').children('input :first').click();
  $(row).children('td').children('input :first').click();
  $(row).children('td').children('input :first').click();
}

因此,每当单击表格行内的元素时,都会单击第一个输入元素。我不知道为什么需要在函数中调用相同的语句 3 次,但这是有原因的。

我的问题是,在 jQuery 更新 (v.1.4.2 --> 1.7.2) 之后,在行上单击鼠标会产生数百个事件,而不是单个事件。浏览器忙于处理它们,以至于它看起来根本没有反应。如果我将函数修改为仅在不更改时调用click()

谁能告诉我造成这种影响的原因是什么。

【问题讨论】:

    标签: jquery html-table click row


    【解决方案1】:

    每次您在其中一个子元素上触发点击事件时,它都会冒泡回到 tr 导致无限循环。尝试触发处理程序而不是事件。

    function selectOnClick(row) {
        $(row).children('td').children('input :first').triggerHandler("click");
    }
    

    请注意,这只会触发 jQuery 绑定事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-21
      • 2011-11-01
      • 2012-06-27
      • 1970-01-01
      • 1970-01-01
      • 2013-08-12
      • 2023-03-11
      • 1970-01-01
      相关资源
      最近更新 更多