0

在我的项目中,我将使用的 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()仅在它不改变时调用。

有人可以告诉我造成这种影响的原因是什么。

4

1 回答 1

1

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

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

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

于 2012-07-18T20:51:14.467 回答