如何使这个jquery弹出函数可重用
How do I make this jquery popup function reusable?
所以我使用的是以下代码:http://jsfiddle.net/xSmNs/
$(document).ready(function() {
$('#lightbox_button').click(function() {
$('#lightbox').fadeIn('slow');
$('#lightbox_panel').fadeIn('slow');
});
$('#close_lightbox').click(function() {
$('#lightbox').fadeOut('slow');
$('#lightbox_panel').fadeOut('slow');
});
});
点击链接弹出窗口。我想要输出不同div的多个链接。我只想创建此代码的多个实例(更改id,以便按钮打开相应的div),但我想知道是否有更有效的方法使用此代码?
您可以将$.fn.lightbox用作函数本身,并将其应用于DOM对象。
http://jsfiddle.net/7rfpwctm/2/
$(document).ready(function() {
$.fn.lightbox = function(){
$(this).click(function() {
$('#lightbox').fadeIn('slow');
$('#lightbox_panel').fadeIn('slow');
});
$('#close_lightbox').click(function() {
$('#lightbox').fadeOut('slow');
$('#lightbox_panel').fadeOut('slow');
});
};
$('#lightbox_button').lightbox();
$('#another_lightbox_button').lightbox();
});
#lightbox_panel
{
position: relative;
z-index: 99;
width: 500px;
height: 100px;
margin: 30px auto 0;
background-color: #CCC;
display: none;
padding: 10px;
}
#lightbox
{
z-index: 90;
position: absolute;
background-color: #000;
opacity: 0.8;
filter: alpha(opacity=80);
width: 100%;
height: 100%;
display: none;
top: 0;
}
#close_lightbox
{
}
#lightbox_button{
position:absolute;
left:0;
top:100%;
width:200px;
}
#another_lightbox_button{
position:absolute;
right:0;
top:100%;
width:400px;
}
.button
{
position: absolute;
text-decoration: none;
padding: 2px 10px;
border: 1px solid #000;
display: inline-block;
bottom: 10px;
left: 50%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="wrapper">
<a href="#" id="lightbox_button">
<div class="button">button</div>
</a>
<a href="#" id="another_lightbox_button">
<div class="button">another button</div>
</a>
<div id="lightbox_panel">
<h1>lightbox panel</h1>
<a href="#" id="close_lightbox">
<div class="button">close</div>
</a>
</div>
</div>
<div id="lightbox"></div>
这样的东西有帮助吗?
为灯箱按钮提供2个数据属性,该属性指向单击时需要弹出的div。还为所有灯箱按钮使用一个公共类。
<a href="#" class="lightbox_button" data-box="#lightbox" data-panel="#lightbox_panel">
<div class="button" >button</div>
</a>
然后你可以重复使用代码,比如
$('.lightbox_button').click(function () {
$($(this).data("box")).fadeIn("slow");
$($(this).data("panel")).fadeIn("slow");
});
Fiddle
您可以使用以下函数:
function doModal(boxid,show) {
if (show) {
$('#'+boxid).fadeIn('slow');
$('#'+boxid+'_panel').fadeIn('slow');
} else {
$('#'+boxid).fadeOut('slow');
$('#'+boxid+'_panel').fadeOut('slow');
}
}
然后在你的按钮或链接上:
<span onclick="doModal('Box1',true)">Open Box 1</span>
<span onclick="doModal('Box2',true)">Open Box 2</span>
用于关闭箱子:
<span onclick="doModal('Box1',false)">Close Box 1</span>
<span onclick="doModal('Box2',false)">Close Box 2</span>
相关文章:
- 如何重写下面的函数,使其不会't用于循环
- 我怎样才能用速记函数来写这段代码
- 为什么我需要在setTimeout中有匿名函数才能使此代码工作
- 有没有办法覆盖 setTimeout 函数,使其使用微秒而不是毫秒
- 在 JavaScript 中的对象内分配柯里函数时,这和 self 之间有什么区别吗?
- 是否有一个Javascript函数可以使代码在运行时延迟
- 是否可以稍微修改我的对称差分函数,使其可以接受未知数量的参数
- Javascript递归函数引用了这一点
- javascript中的函数重载使两个函数名称相同,但输入数字不同
- React如何调用ES6类的呈现函数,使“this”不引用类本身
- .wrap()在与resize函数一起使用时多次添加选择器
- jQuery如何在递归函数中使变量按值递增
- 原型回调函数替换'这'价值
- 如何将inputtextbox的值及其id传递给javascript函数,使其通过ajax进行post请求
- .nextAll函数在单击函数内部使用时将不起作用
- 如何重新编码我的jQuery/JavaScript函数,使其更通用,不需要唯一标识符
- 添加混合 javascript 函数,使内容淡入列内的另一个内容/使其适用于两个单独的列
- 有没有办法使这段代码更短
- 是否可以绑定javascript函数,使其本地上下文与“this”相同
- 全局变量在函数中使用时返回未定义