正在执行函数列表jquery
Executing list of functions jquery
我想执行一个函数列表,如下所示:
window.onkeypress = [f1(), f2(), f3(), fn() ...] ...
有可能???
更新
重点是,对于event.keycode,我必须执行一系列函数,但我想设置泛型类型的函数列表,例如:
JQueryExtension.eventKeyCode[33] = [f1(), f2(), fn() ...];
JQueryExtension.KeyBoardControl = function (event) {
if (event.shiftKey && event.keyCode == 33) {
JQueryExtension.eventKeyCode[event.keyCode];
return;
}
};`
最后制作:
window.onkeypress = JQueryExtension.KeyBoardControl;
:D!!
更新
好吧,像这样的事情,可以吗??
JQueryExtension.eventKeyCode = new Array();
JQueryExtension.KeyBoardControl = function (event) {
if (event.shiftKey && event.keyCode == 33) {
for (var i = 0; i < JQueryExtension.eventKeyCode.length; i++) {
if (JQueryExtension.eventKeyCode[i] == event.keyCode) {
var listOfFunctions = JQueryExtension.eventKeyCode[i];
for (var j = 0; j < listOfFunctions.length; j++) {
listOfFunctions[j]();
}
}
}
return;
}
};
window.onkeypress = JQueryExtension.KeyBoardControl;
更新
天啊,像这样的东西:
var functionsForKeyCodeOne = [
{
keyCode: 33,
theFunction: Billing.TheKnockOutDataTableViewModelCustomerSearcher.mainData([])
},
{
keyCode: 33,
theFunction: Billing.SetModalVisibility("searcherCustomerModal", "show")
},
{
keyCode: 33,
theFunction: $('#searcherCustomerModal').on('shown.bs.modal', function() {
$("#txtNameCustomer").focus();
})
}
];
JQueryExtension.eventKeyCode.push(functionsForKeyCodeOne);
window.onkeypress = JQueryExtension.KeyBoardControl;
JQueryExtension.KeyBoardControl = function (event) {
if (event.shiftKey && event.keyCode == 33) {
for (var i = 0; i < JQueryExtension.eventKeyCode.length; i++) {
if (JQueryExtension.eventKeyCode[i].keyCode == event.keyCode) {
var listOfFunctions = JQueryExtension.eventKeyCode[i];
for (var j = 0; j < listOfFunctions.length; j++) {
listOfFunctions[j].theFunction();
}
}
}
return;
}
};
:哦!!!
遍历绑定侦听器函数中的函数数组,并调用每个函数:
var funcs = [f1, f2, f3, f4];
$(window).on("keypress", function() {
for(var i in funcs) {
if(!funcs.hasOwnProperty(i)) {
continue;
}
funcs[i]();
}
});
您可以使用这样的东西:
window.onkeypress = function() {
f1();
f2();
f3();
.
.
.
};
注意:确保函数在作用域内
为什么不这样做
$(function(){
$('your_selector').on('keypress', function(){
f1();
f2();
...
...
..a list of functions here
});
});
或者像这个
$(function(){
$(window).keypress(function(e){
f1();
f2();
...
...
..a list of functions here
});
});
我已经解决了我的问题,完整的实现在这里::
首先我定义了一些变量:
JQueryExtension.eventKeyCode = new Array(); //The Functions List of keycode
JQueryExtension.availableKeyCode = new Array(); // The key code that I want evaluate
JQueryExtension.notExistElementOnArray = -1; // For indexOf if not exists on the combination that I require
数据准备:
Billing.PreconditionalExecutions = function() {
for (var i = 33; i <= 40; i++) {
JQueryExtension.availableKeyCode.push(i);
}
JQueryExtension.eventKeyCode.push({
keyCode: 33,
theFunctionList: [
function() {
Billing.TheKnockOutDataTableViewModelCustomerSearcher.mainData([]);
},
function() {
BootStrapExtension.SetModalVisibility("searcherCustomerModal", "show");
},
function() {
BootStrapExtension.OnShowModal("searcherCustomerModal",
[
function() {
JQueryExtension.SetFocusedElement("txtNameCustomer");
}
]);
}
]
},
{
keyCode: 34,
theFunctionList: [function() { BootStrapExtension.SetModalVisibility("searcherProductModal", "show"); }]
},
{
keyCode: 35,
theFunctionList: [function() { theMainViewModel.newBillingCommand(); }]
},
{
keyCode: 36,
theFunctionList: [function() {}]
},
{
keyCode: 37,
theFunctionList: [function() { theMainViewModel.finishBillingCommand(); }]
},
{
keyCode: 38,
theFunctionList: [function() { theMainViewModel.holdCommand(); }]
},
{
keyCode: 39,
theFunctionList: [function() { theMainViewModel.abortCommand(); }]
},
{
keyCode: 40,
theFunctionList: [function() { theMainViewModel.canceledCommand(); }]
}
);
};
调用函数:
Billing.PreconditionalExecutions();
在我这样设置window.onkeypress
功能之后:
window.onkeypress = JQueryExtension.KeyBoardControl;
执行是这样的:
JQueryExtension.KeyBoardControl = function (event) {
if (event.shiftKey && (JQueryExtension.availableKeyCode.indexOf(event.keyCode) != JQueryExtension.notExistElementOnArray)) {
for (var i = 0; i < JQueryExtension.eventKeyCode.length; i++) {
if (JQueryExtension.eventKeyCode[i].keyCode == event.keyCode) {
var listOfFunctions = JQueryExtension.eventKeyCode[i];
for (var j = 0; j < listOfFunctions.theFunctionList.length; j++) {
listOfFunctions.theFunctionList[j]();
}
break;
}
}
return;
}
};
结束!!!:D
任何关于代码优化的建议,我都会感谢
相关文章:
- 从项目列表Jquery中仅选择(显示:块)元素
- 如何处理多选下拉列表 - JQuery.
- 如果未选择第一项,请选择下拉列表 jQuery
- 要执行列表jquery,请划掉项目
- 如何修改代码以将其应用于三个下拉列表?(Jquery)
- 如何在下拉列表JQuery中添加reclick
- 正在执行函数列表jquery
- 引用SELECT列表jQuery
- 限制要在嵌套列表jQuery中添加的列表元素的数量
- 无序列表 jQuery 在固定位置显示列表中的选定项
- 从列表 JQUERY 中获取单击输入的正确名称
- 如何将项目添加到选定的追加列表 jQuery
- 如何选择特定的状态列表 Jquery.
- 单个列筛选不保存下拉列表 jQuery 的状态
- 谷歌日历事件列表jQuery格式
- 设置输入值后将列表拆分为多个小列表 - Jquery
- 尝试输出唯一数据属性列表(jQuery/Java)
- 如何在窗口宽度处删除类列表 - jquery/javascript
- 默认文本下拉列表jquery
- 从列表jquery中获取最接近的值