Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery事件在异步回发上不起作用,在第二次回发时修复,在第三次回发时中断_Javascript_C#_Jquery_Asp.net_Jquery Events - Fatal编程技术网

Javascript JQuery事件在异步回发上不起作用,在第二次回发时修复,在第三次回发时中断

Javascript JQuery事件在异步回发上不起作用,在第二次回发时修复,在第三次回发时中断,javascript,c#,jquery,asp.net,jquery-events,Javascript,C#,Jquery,Asp.net,Jquery Events,以下是我的页面的简化版本: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>

以下是我的页面的简化版本:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
    <script language="javascript" type="text/javascript">
        var cbFuncInit = function() {
            $('div').click(function(evt) {
                if (evt.target.type !== 'checkbox') {
                    var checkbox = $(':checkbox', this);
                    checkbox.attr('checked', !checkbox.attr('checked'));
                    evt.stopPropagation();
                    return false;
                }
            });
        };

        $(document).ready(function() {
            cbFuncInit();
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" />

    <div id="myDiv" style="background-color:red;height:50px;width:50px;">
        <asp:checkbox ID="Checkbox1" runat="server" ></asp:checkbox>
    </div>

    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>    
            <asp:Repeater ID="Repeater1" runat="server">
            <ItemTemplate>
                <div id="myDiv" style="background-color:red;height:50px;width:50px;">
                <asp:checkbox ID="Checkbox1" runat="server"></asp:checkbox>
            </div>
            </ItemTemplate>
            </asp:Repeater>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="Button1"/>
        </Triggers>
    </asp:UpdatePanel>

    <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
    </form>
</body>
</html>

var cbFuncInit=函数(){
$('div')。单击(函数(evt){
如果(evt.target.type!=“复选框”){
var checkbox=$(':checkbox',this);
checkbox.attr('checked'),!checkbox.attr('checked');
evt.stopPropagation();
返回false;
}
});
};
$(文档).ready(函数(){
cbFuncInit();
});

. 不幸的是,我的JavaScript调试技能在这里有点落后

如果不查看页面的实际版本,我不确定这里发生了什么,但是当您重新绑定事件时,似乎发生了某种冲突

您可以尝试的一件事是:

  • 首先用jQuery 1.3替换jQuery 1.2.6
  • 然后替换
    $('div')。单击(函数(evt){//function code here})
    $('div')。live('click',函数(evt){//function code here})
完成此操作后,无需使用ScriptManager.RegisterStartupScript重新绑定事件,因为事件将通过委派捕获。通过回发不断添加新复选框,事件将自动绑定

希望能解决你的问题

protected void Button1_Click(object sender, EventArgs e)
{
    var list = new List<string> { "", "", "" };
    Repeater1.DataSource = list;
    Repeater1.DataBind();
    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "", "cbFuncInit();", true);
}