我有一个ASP.NET服务器控件,它继承自CheckBoxList,它使用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时触发在CheckBox上呈现的JavaScript。以下是我到目前为止的情况:
$("#foo li").click(function() {
$(this).find("input:eq(0)").trigger("click");
});
这会在FF 3.x中触发回发,但代码隐藏中的事件处理程序不会被触发。在IE 7中出现了一个脚本错误,浏览器只是暂停了一段时间然后重新加载页面。
我该怎么做?
答案 0 :(得分:1)
我试试看:
$("#foo li").click(function() {
$(this).find("input:eq(0)").triggerHandler("click");
});
子项上的触发器将冒泡到父项,在这种情况下会导致循环,因为父单击再次触发子单击。 Firefox有时会识别并停止此操作,但结果是你的盒子被检查,它会冒泡,它没有被检查等等,它不会被触发,因为检查状态确实没有改变。
.triggerHandler()
但不会冒泡,可能会解决您的问题(除非发生另一个脚本错误!)。作为一般规则,在触发孩子的处理程序时使用此选项,尤其是触发将会冒泡的孩子的相同事件。