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

时间:2010-04-16 14:14:15

标签: asp.net javascript jquery

我有一个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中出现了一个脚本错误,浏览器只是暂停了一段时间然后重新加载页面。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

我试试看:

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

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

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