触发元件';使用JQuery[ASP.NET]的onclick方法

触发元件';使用JQuery[ASP.NET]的onclick方法,asp.net,javascript,jquery,Asp.net,Javascript,Jquery,我有一个ASP.NET服务器控件,该控件继承自复选框列表,该列表使用UL和LIs呈现控件。控件设置为自动回发 标记: <div id="foo"> <ul> <li> <input id="..." type="checkbox" name="ctl00$MainContent$FooList$0"

我有一个ASP.NET服务器控件,该控件继承自复选框列表,该列表使用UL和LIs呈现控件。控件设置为自动回发

标记:

<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>
这会在FF 3.x中触发回发,但不会触发codebehind中的事件处理程序。在IE7中,出现了一个脚本错误,浏览器只是在那里挂了一会儿,然后重新加载页面

我该怎么做呢?

我想试试:

$("#foo li").click(function() {
    $(this).find("input:eq(0)").triggerHandler("click");
});
子项上的触发器将冒泡到父项,在这种情况下会导致循环,因为父项单击再次触发子项单击。Firefox有时会识别并停止此操作,但结果是您的复选框被选中、冒泡、取消选中,等等,在回发时,它不会触发,因为检查状态实际上没有改变

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

我想尝试一下:

$("#foo li").click(function() {
    $(this).find("input:eq(0)").triggerHandler("click");
});
子项上的触发器将冒泡到父项,在这种情况下会导致循环,因为父项单击再次触发子项单击。Firefox有时会识别并停止此操作,但结果是您的复选框被选中、冒泡、取消选中,等等,在回发时,它不会触发,因为检查状态实际上没有改变


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

感谢您的解释,现在脚本在两种浏览器中都能正确触发。很遗憾,未触发ASP.NET事件处理程序。我不知道ASP.NET是否适合你,但它是否有什么想法?@blu-发生这种情况时,你是在点击复选框,还是在点击
  • ?如果点击
  • ,这仍然会切换复选框,弹出一次(最初的点击)并将其切换回…当点击
  • 中的任何位置时,该复选框工作正常吗?@Nick Craver-复选框正常工作。单击li会导致回发,不会切换复选框的选定状态,也不会触发EventHandler。@blu-您能用输入的onclick的完整版本更新吗?@Nick Craver-我更新了问题中的现有标记。感谢您的阅读。脚本现在可以在两种浏览器中正常启动了,谢谢您的解释。很遗憾,未触发ASP.NET事件处理程序。我不知道ASP.NET是否适合你,但它是否有什么想法?@blu-发生这种情况时,你是在点击复选框,还是在点击
  • ?如果点击
  • ,这仍然会切换复选框,弹出一次(最初的点击)并将其切换回…当点击
  • 中的任何位置时,该复选框工作正常吗?@Nick Craver-复选框正常工作。单击li会导致回发,不会切换复选框的选定状态,也不会触发EventHandler。@blu-您能用输入的onclick的完整版本更新吗?@Nick Craver-我更新了问题中的现有标记。谢谢你看。