asp.net - 使用 JQuery 触发元素的 onclick 方法 [ASP.NET]

标签 asp.net javascript jquery

我有一个继承自 CheckBoxList 的 ASP.NET 服务器控件,该控件使用 UL 和 LI 呈现控件。该控件设置为 AutoPostBack。

标记:

<div id="foo">
    <ul>
        <li>
            <input id="..." 
                   type="checkbox" 
                   name="ctl00$MainContent$FooList$0"    

                   onclick="javascript:setTimeout(
                   '__doPostBack(\'ctl00$MainContent$FooList$0\',\'\')', 0)" />

            <label ...>...</label>
        </li>
        ...
    </ul>
</div>

我想在单击父 LI 时触发在复选框上呈现的 JavaScript。这是我到目前为止所拥有的:

$("#foo li").click(function() {
    $(this).find("input:eq(0)").trigger("click");
});

这会在 FF 3.x 中触发回发,但不会触发代码隐藏中的事件处理程序。在 IE 7 中,会出现脚本错误,浏览器会挂起一会儿,然后重新加载页面。

我应该怎么做?

最佳答案

我会尝试一下:

$("#foo li").click(function() {
    $(this).find("input:eq(0)").triggerHandler("click");
});

子级上的触发器将冒泡到父级,在这种情况下会导致循环,因为父级单击再次触发子级单击。 Firefox 有时会识别并停止此操作,但结果是您的框被选中,它冒泡,它未被选中,等等回发,它不会触发,因为检查状态确实没有改变。

.triggerHandler()但是不会冒泡,并且可能会解决您的问题(除非发生另一个脚本错误!)。作为一般规则,在触发子级上的处理程序时使用此选项,尤其是在将冒泡的子级上触发相同的事件时。

关于asp.net - 使用 JQuery 触发元素的 onclick 方法 [ASP.NET],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2653545/

相关文章:

jquery - ("#panel").is 不是函数错误 Jquery

javascript - 如何确保可以从 IE 的新窗口中读取 cookie?

javascript - 通过代码隐藏将数据传递给 <area> 标签内的 <href> 标签

asp.net - 将列表框文本传递给 Javascript 弹出窗口 URL

javascript - 如何在 PhantomJS 中测试 String.prototype.includes

javascript - Angular 2/4 : How to restrict access to Login Route if user is already logged in?

javascript - jquery TimeCircles 卡住了

jquery - 带有 UpdatePanel 的 jQuery 屏蔽输入插件

c# - 如何在一行代码中转换和使用一个对象?

javascript - 根据 ajax 成功,引导模式弹出并在几秒钟后淡出