asp.net - jQuery UI 与 asp.net 母版页

标签 asp.net jquery jquery-ui master-pages

我正在使用 jQuery UI 从 asp.net 更新我的网站之一以使用母版页。

这是我的原始代码片段,它可以在母版页上工作,但不能在以下情况下工作:

    $('#myCancelEventDialog').dialog({
        autoOpen: false,
        width: 500,
        buttons: {
            "Cancel This Event": function () { __doPostBack('btnCancel', ''); },  
            "Do Nothing": function () { $(this).dialog("close"); }
        }
    });

但是,我看到发生了什么,母版页更改了函数的名称,下面的代码针对此实例修复了它。

    $('#myCancelEventDialog').dialog({
        autoOpen: false,
        width: 500,
        buttons: {
            "Cancel This Event": function () { __doPostBack('ctl00$ContentPlaceHolder$btnCancel', ''); },  
            "Do Nothing": function () { $(this).dialog("close"); }
        }
    });

请注意,我已在 btnCancel 上添加了“ctl00$ContentPlaceHolder$”前缀,以便修复相应的回调函数。

从我在 stackoverflow 上读到的其他线程中,有一个比我在上面所做的一次修补代码更好的解决方案,但还没有完全正确。

当您像上面的示例一样使用母版页时,获取 jQuery UI 回发函数以找到正确的回调函数的通用方法是什么?

最佳答案

快速修复可能是执行以下操作

 $('#myCancelEventDialog').dialog({
        autoOpen: false,
        width: 500,
        buttons: {
            "Cancel This Event": function () { __doPostBack("'" + $('[id$=btnvalue]')[0].id + "'", ''); },  
            "Do Nothing": function () { $(this).dialog("close"); }
        }
    });

这使用了 jQuery endswith选择器,因为母版页现在意味着您的控件 ID 有前缀,但结尾是相同的。只要您没有重复的 id 就可以使用此方法,而这正是 ASP.NET 团队旨在通过为嵌套控件 id 添加前缀来阻止的情况。 这样做的缺点是 jQuery 必须做更多的工作来查找元素,因为它无法使用 native getElementById。

另一个修复方法是升级到 asp.net 4.0,您可以使用 clientidmode 关闭控件的前缀。

关于asp.net - jQuery UI 与 asp.net 母版页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3160521/

相关文章:

jquery - 通过 jquery ui 选项卡中的 url 更改事件选项卡 (jquery 1.10.2)

asp.net - 您希望在初学者的 ASP.NET 安全书中看到什么

javascript - 未捕获的语法错误 : Unexpected token {

javascript - jquery ui自动完成获取所选选项的值

jquery - 我怎样才能提高这个jquery动画代码的性能

jquery - 即使使用最低配置,ColVis 也无法工作

javascript - onClientClick 返回 true 时不会触发 OnClick 事件

c# - 将 ASP.NET Controller 路由与 AngularJS 对象 id 相结合

javascript - 如何过滤全选复选框以仅选择网格上的特定列

javascript - JqG​​rid从服务器更新数据