如何将一个函数用于多个元素
How to use a function for multiple elements?
我创建了一个可拖动的框。您可以在下面看到我的代码:
// To change the position of pop-up
function handle_mousedown(e){
window.my_dragging = {};
my_dragging.pageX0 = e.pageX;
my_dragging.pageY0 = e.pageY;
my_dragging.elem = $(".fast_login_form");
my_dragging.offset0 = $(this).offset();
function handle_dragging(e){
var left = my_dragging.offset0.left + (e.pageX - my_dragging.pageX0);
var top = my_dragging.offset0.top + (e.pageY - my_dragging.pageY0);
$(my_dragging.elem)
.offset({top: top, left: left});
}
function handle_mouseup(e){
$('body')
.off('mousemove', handle_dragging)
.off('mouseup', handle_mouseup);
}
$('body')
.on('mouseup', handle_mouseup)
.on('mousemove', handle_dragging);
}
// make draggable 'fast login form'
$(".fast_login_form_header").mousedown(handle_mousedown);
.fast_login_form{
border: 2px solid gray;
width: 250px;
height: 100px;
}
.fast_login_form_header{
text-align: center;
border-bottom: 1px solid gray;
cursor: move;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="fast_login_form">
<div class="fast_login_form_header"> click and hold and move </div>
</div>
上面的代码也可以,但根据这一行,它只适用于一个盒子:
my_dragging.elem = $(".fast_login_form");
现在我想知道,我怎样才能为每个盒子实现该功能?不只是.fast_login_form
?实际上,我想知道如何将$(".fast_login_form")
作为参数传递给该函数?
换句话说,我想在HTML中创建另一个这样的框:
<div class="another_fast_login_form">
<div class="fast_login_form_header"> click and hold and move </div>
</div>
我也想让它变得可拖动。我可以为它们编写两次这些代码,但我想知道如何将这些代码用于多个盒子?
使用 $(this).closest('.fast_login_form')
而不是 $('.fast_login_form')
// To change the position of pop-up
function handle_mousedown(e){
window.my_dragging = {};
my_dragging.pageX0 = e.pageX;
my_dragging.pageY0 = e.pageY;
my_dragging.elem = $(this).closest('.fast_login_form');
my_dragging.offset0 = $(this).offset();
function handle_dragging(e){
var left = my_dragging.offset0.left + (e.pageX - my_dragging.pageX0);
var top = my_dragging.offset0.top + (e.pageY - my_dragging.pageY0);
$(my_dragging.elem)
.offset({top: top, left: left});
}
function handle_mouseup(e){
$('body')
.off('mousemove', handle_dragging)
.off('mouseup', handle_mouseup);
}
$('body')
.on('mouseup', handle_mouseup)
.on('mousemove', handle_dragging);
}
// make draggable 'fast login form'
$(".fast_login_form_header").mousedown(handle_mousedown);
.fast_login_form{
border: 2px solid gray;
width: 250px;
height: 100px;
}
.fast_login_form_header{
text-align: center;
border-bottom: 1px solid gray;
cursor: move;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="fast_login_form">
<div class="fast_login_form_header"> click and hold and move </div>
</div>
<div class="fast_login_form">
<div class="fast_login_form_header"> click and hold and move </div>
</div>
只需使用选择器来选择所有可拖动元素,例如给它们一个类draggable
并使用$(".draggable")
选择它们。而不是使用全局变量(window.my_dragging
),使用局部变量var my_dragging
,因此它对每个元素都是唯一的。
为什么不直接创建一个新类"可拖动",将其添加到您想要可拖动的任何元素中,并切换您的选择器以使用
my_dragging.elem = $(".draggable");
相关文章:
- Javascript函数用于检查数字并返回
- 为什么不是't此函数用于修改最终输出
- JQuery .find() 函数用于多个数组
- 在ko.applyBindings(..)中执行Knockout js订阅函数(用于可观察对象)
- Javascript函数用于选择/取消选中radgrid标头模板中的所有复选框
- 如何将一个函数用于多个项目 JEditable/JQuery
- 如何将一个函数用于多个元素
- 如何使用不带逗号的 join() 函数(用于数组)
- Setter 函数用于动态访问数组中的字段,该数组是一个属性
- JavaScript .some 函数用于对象属性
- 如何将一个函数用于具有不同 id 的输入类
- javascript changelink函数用于2选择
- 2jquery.click函数用于一个按钮.火一个接一个地发挥作用
- Javascript函数用于按Id检索不同的html元素
- 在流星中,是否有一个onRendered函数用于所有模板
- 使用jQuery's setTimout()函数用于锚点滚动
- 将jQuery.click()函数用于单个元素
- Javascript中的内置函数用于格式化日期
- 一个函数用于多个元素
- Init函数用于引导盒显示对话框后使用一些代码