2

当用户单击表格行时,我使用 jQuery 选择其中一个单元格中的链接。根据我的搜索,这是相当标准的。

$(document).ready(function () {
    $('table.timecarddetail tr').click(function () {
            var href = $(this).find("a").attr("href");
            if (href) {
                window.location = href;
            }
        });
    });  

注意:table.timecarddetail 是表类。

嵌入的链接本质上是一个 ajax 调用,因此它不会进行完整的回发,并且页面不会刷新。我的问题是事件触发一次,但随后的点击被忽略。

技术细节:我使用的是VS2010,每个链接都指向传递记录ID的相同过程。模态弹出扩展器面板由该记录中的数据填充,然后使用 panel.show 显示。

我在这里做错了什么?

4

1 回答 1

0

我过去在实现 JQueryUI 时遇到了同样的问题。脚本管理器在 ajax 回发后销毁 javascript。您可以通过将其包装在一个函数中并在 ajax 调用的开始和结束时调用它来解决这个问题

jQuery

$(document).ready(function () { 
    setRows();
});   

function setRows() {
$('table.timecarddetail tr').click(function () { 
        var href = $(this).find("a").attr("href"); 
        if (href) { 
            window.location = href; 
        } 
    }); 
}

然后在你的页面中把它放在你的脚本管理器之后

<asp:ScriptManager runat="server">
</asp:ScriptManager>
<script type="text/javascript">
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_beginRequest(BeginRequestHandler);
    prm.add_endRequest(EndRequestHandler);
    function BeginRequestHandler(sender, args) {
        setRows();
    }
    function EndRequestHandler(sender, args) {
        setRows();
    }
</script>

希望这可以帮助。

于 2012-06-29T09:58:04.590 回答