javascript - 有多个url参数时将2个函数合并为1个
问题描述
我正在使用两个函数来打开一个 SharePoint 模式对话框,但是我看到这种情况在未来会增长,为多个 URL 创建多个函数可能会导致开销。
我不熟悉使用“选项”。是否有关于如何合并这两个功能的最佳实践?任何建议将不胜感激。谢谢!
<a href="#" onclick="OpenDashHelpDialog('Dashboard Help Desk Info');"><img src="/PublishingImages/help.png"></a>
<a href="#" onclick="OpenHRHelDeskpDialog('HR Help Desk Info');"><img src="/PublishingImages/help.png" </a>
function OpenHelpDeskDialog() {
var options = {
url: "/admin/Pages/IThelp.aspx",
width: 275,
height: 90,
dialogReturnValueCallback: DialogCallback
};
SP.UI.ModalDialog.showModalDialog(options);
}
function OpenHRHelpDeskDialog() {
var options = {
url: "/admin/Pages/HRDesk.aspx",
width: 400,
height: 100,
dialogReturnValueCallback: DialogCallback
};
SP.UI.ModalDialog.showModalDialog(options);
}
解决方案
如果要合并事件处理程序,则需要将逻辑差异抽象到更高级别。在这种情况下,您可以使用元素本身的data
属性来存储and ,并使用属性来存储 URL。像这样的东西:a
width
height
href
<a href="/admin/Pages/IThelp.aspx" class="dialog-trigger" data-width="275" data-height="90">
<img src="/PublishingImages/help.png" />
</a>
<a href="/admin/Pages/HRDesk.aspx" class="dialog-trigger" data-width="400" data-height="100">
<img src="/PublishingImages/help.png" />
</a>
$('.dialog-trigger').click(function(e) {
e.preventDefault();
var $a = $(this);
SP.UI.ModalDialog.showModalDialog({
url: $a.attr('href'),
width: $a.data('width'),
height: $a.data('height'),
dialogReturnValueCallback: DialogCallback
});
});
请注意,我在 jQuery 中创建了这个示例,因为这就是您的问题中标记的内容。您可以使用普通 JS 轻松实现相同的目标,尽管我强烈建议您在过时(且丑陋)的on*
事件属性上使用不显眼的事件处理程序。
推荐阅读
- neo4j - NEO4J / Cypher:如果集合只有错误结果,则创建节点
- flutter - graphql_flutter return LazyCacheMap,built_value deserializeWith JSON String,如何让它们协同工作
- visual-studio-code - 将 Power BI 报表插入 AL 中的自定义页面
- python-3.x - ValueError: Too large work array required -- 无法在 Linux 服务器上使用标准 32 位 LAPACK 执行计算
- spring-boot - 如何配置我的 NGINX 以允许我的 Spring Boot 应用程序上的 CSRF 保护
- go - 循环包含 map[int]*somepointer 的 interface{}
- jquery - 如何使用 if 语句使菜单子显示继承
- javascript - 是否可以录制 HTML 元素内容的视频?
- fido-u2f - WebAuthn / FIDO2 证明对象和客户端数据 JSON 示例
- c# - 如何在 Visual Studio 中将 Oracle 用户定义类型导出为 C# 类?