重构jQuery/JavaScript代码以显示/隐藏大量的模态窗口
Refactoring jQuery/JavaScript code for showing/hiding a large number of modal windows
我现在有很多这样的函数:
function show_foo() {
$('.modal').hide(); // hide all modals
$('#foo').show(); // show the foo modal
}
function show_bar() {
$('.modal').hide();
$('#bar').show();
}
问题是我有大约10个这样的函数,它看起来很笨拙。有没有更优雅的方法来做这件事?
许多谢谢。function hideModalAndShow(id) {
$('.modal').hide();
$('#' + id).show();
}
您可以用一行替换这些函数,如下所示:
$('.modal').hide().filter('#bar').show();
如果所有的函数看起来都一样,您可以这样做
function toggleModal(classToHide, idToShow) {
$('.' + classToHide).hide(); // hide all modals
$('#' + idToSHow).show(); // show the foo modal
}
并将其命名为:-
toggleModal('modal', 'foo');
将选择器作为函数的参数。
function show(selector) {
$('.modal').hide();
$(selector).show();
}
show('#bar');
现在你可以提交一个选择器字符串或一个jquery对象。不建议将#
移动到函数中,因为这样会降低可重用性,并且更脆弱,但这取决于您的用例。
show('bar');
$('#' + selector).show();
如果类.modal
可能会发生变化,您可能希望进一步修改函数,并将模态的选择器作为第二个(可选的)参数。
function show(selector,modal) {
$(modal?modal:'.modal').hide();
$(selector).show();
}
这样,可以为模态提供一个选择器,但如果没有为模态提供参数,它将采用默认值。
相关文章:
- 点击AngularJS模态窗口捕捉背景事件
- 在angularJS中使用模态窗口时,在控制器之间共享对象数组
- 如何使用jquery关闭模态窗口,通过模拟模态's关闭按钮
- Angularjs - 观察模态窗口从另一个控制器关闭
- 模态窗口yii2中的Ajax验证数据
- Ajax 模态窗口可以访问父窗口 PHP 数据吗?
- 在选择(rails_admin)时更改时在模态窗口中添加新字段
- 在模态窗口上创建 cookie
- 如何在用户离开网页时显示模态窗口
- Magento时事通讯弹出窗口(模态窗口)在每个页面上触发.它应该只在主页上弹出
- 如何在 jquery 中浮动模态窗口
- 创建一个模态窗口以使用 AngularJS 加载数据
- Angular JS将msg广播到多个视图,包括模态窗口
- 模态窗口在电子上消失
- 如何使用 javascript 在模态窗口内重定向
- ExtJS 4.2.1 用于加载指示和模态窗口的不同 CSS 掩码
- 机器人可以单击在 javascript 中制作模态窗口的链接吗?
- 如何在 angularjs 模态窗口中运行 jquery
- Javascript 模态窗口例程每次单击都会执行更多时间
- 模态窗口(弹出窗口)警报在使用 angularJs 的错误字段上显示