我有一个继承自 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/