asp.net - jQuery 单击事件处理程序为复选框调用两次

标签 asp.net jquery checkbox

我在 ASPX 页面中使用以下代码时遇到问题:

<script type="text/javascript">
$(document).ready(function() {
    $('.test').click(function() {
        alert("click")
    })
});
</script>

<asp:CheckBox runat="server" Text="Checkbox XYZ" CssClass="test" ID="cb1" />

在浏览器(FF3.5/IE8)中我遇到以下问题:

  • 如果我点击复选框(小方 block ),它就会按预期工作
  • 如果我单击复选框的文本(“Checkbox XYZ”),则会触发两次单击事件,并显示两次警报。

我猜这与复选框呈现为 HTML 的方式有关,如下所示:

<span class="test">
 <input id="ctl00_c1_cb1" type="checkbox" name="ctl00$c1$cb1" checked="checked"/>
 <label for="ctl00_c1_cb1">Checkbox XYZ</label>
</span>

如何正确设置点击事件处理程序以防止它被调用两次?

最佳答案

我刚刚经历过同样的事情,但不确定事件冒泡是否导致了我的问题。我有一个自定义树控件,当打开一个项目时,我使用 $(id).click() 将处理程序附加到某种类型的所有元素。

我怀疑这意味着其他地方已经有该事件的现有项目可能会再次添加它。我发现取消绑定(bind)所有内容然后重新绑定(bind)解决了我的问题,因此:

$('img.load_expand').unbind("click").click(function()
{
  // handler
});

关于asp.net - jQuery 单击事件处理程序为复选框调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1536660/

相关文章:

angular - 如何在 Angular 4 的 Material Design 表格中添加复选框

asp.net - 有没有办法摆脱 ASP.NET Web 部署项目中的 aspx 占位符文件?

c# - 必须在哪里进行依赖注入(inject)注册?

javascript - jquery匹配多个数据组(仅当它们都为真时)

javascript - 获取文本框的背景颜色

javascript - 如何使用 Hightchart-ng 制作 Highcharts 半圆 donut chart

javascript - 将 Vue-switch 值绑定(bind)到 data 属性

jQuery:以数组形式返回复选框的值?

c# - 使用 .NET Core 依赖注入(inject)确定在运行时注入(inject)哪个实现

asp.net - 在我的 ASP.NET 应用程序中,在页面加载之前从代码隐藏注册脚本会在 IE 中引发 "operation aborted"错误