Javascript 管理和维护过多的点击jquery处理程序
我最近一直在将Phonegap升级到最新版本,现在它迫使我遵循Chrome的内容安全策略,这在某种程度上是好的。但是现在我不得不删除HTML代码中所有的onclick处理程序,并将它们添加到jquery处理程序中一些$(document).ready(function(evt){Javascript 管理和维护过多的点击jquery处理程序,javascript,jquery,html,google-chrome,content-security-policy,Javascript,Jquery,Html,Google Chrome,Content Security Policy,我最近一直在将Phonegap升级到最新版本,现在它迫使我遵循Chrome的内容安全策略,这在某种程度上是好的。但是现在我不得不删除HTML代码中所有的onclick处理程序,并将它们添加到jquery处理程序中一些$(document).ready(function(evt){ 但是,根据我的应用程序被放大的程度,我觉得这些处理程序将有太多了。是否有一个例子显示了这些处理程序的维护以及定义这些处理程序的正确方式或位置。这里有一个想法。你可以制作一个对象,它存储了所有的函数,也知道如何放弃f功能
但是,根据我的应用程序被放大的程度,我觉得这些处理程序将有太多了。是否有一个例子显示了这些处理程序的维护以及定义这些处理程序的正确方式或位置。这里有一个想法。你可以制作一个对象,它存储了所有的函数,也知道如何放弃f功能
var handlers = {
getHandler: function (str) {
return this[str];
},
'#addRecordBtn': function () {
alert("Adding Record");
AddValueToDB();
},
'#refreshBtn': function () {
alert("Refresh Records");
ListDBValues();
}
};
然后使用此表单应用所有处理程序
$('#addRecordBtn').on('click', handlers.getHandler('#addRecordBtn'));
$('#refreshBtn').on('click', handlers.getHandler('#refreshBtn'));
优化时间如果您想获得真正的乐趣,并按照惯例为每个按钮分配一个唯一的ID
var handlers = {
defer: function () {
return function (){
handlers[$(this).attr('id')](arguments);
};
},
registerHandlers: function () {
for (var key in this) {
if (this.hasOwnProperty(key) && typeof(key) === "string") {
$('#' + key).on('click', this.defer());
}
}
},
'addRecordBtn': function () {
alert("Adding Record");
AddValueToDB();
},
'refreshBtn': function () {
alert("Refresh Records");
ListDBValues();
}
};
称之为
$('#addRecordBtn').on('click', handlers.defer());
$('#refreshBtn').on('click', handlers.defer());
或者自动注册所有内容
handlers.registerHandlers();
这里有一个想法。你可以制作一个存储所有函数的对象,它也知道如何放弃函数
var handlers = {
getHandler: function (str) {
return this[str];
},
'#addRecordBtn': function () {
alert("Adding Record");
AddValueToDB();
},
'#refreshBtn': function () {
alert("Refresh Records");
ListDBValues();
}
};
然后使用此表单应用所有处理程序
$('#addRecordBtn').on('click', handlers.getHandler('#addRecordBtn'));
$('#refreshBtn').on('click', handlers.getHandler('#refreshBtn'));
优化时间如果您想获得真正的乐趣,并按照惯例为每个按钮分配一个唯一的ID
var handlers = {
defer: function () {
return function (){
handlers[$(this).attr('id')](arguments);
};
},
registerHandlers: function () {
for (var key in this) {
if (this.hasOwnProperty(key) && typeof(key) === "string") {
$('#' + key).on('click', this.defer());
}
}
},
'addRecordBtn': function () {
alert("Adding Record");
AddValueToDB();
},
'refreshBtn': function () {
alert("Refresh Records");
ListDBValues();
}
};
称之为
$('#addRecordBtn').on('click', handlers.defer());
$('#refreshBtn').on('click', handlers.defer());
或者自动注册所有内容
handlers.registerHandlers();
这里有一个想法。你可以制作一个存储所有函数的对象,它也知道如何放弃函数
var handlers = {
getHandler: function (str) {
return this[str];
},
'#addRecordBtn': function () {
alert("Adding Record");
AddValueToDB();
},
'#refreshBtn': function () {
alert("Refresh Records");
ListDBValues();
}
};
然后使用此表单应用所有处理程序
$('#addRecordBtn').on('click', handlers.getHandler('#addRecordBtn'));
$('#refreshBtn').on('click', handlers.getHandler('#refreshBtn'));
优化时间如果您想获得真正的乐趣,并按照惯例为每个按钮分配一个唯一的ID
var handlers = {
defer: function () {
return function (){
handlers[$(this).attr('id')](arguments);
};
},
registerHandlers: function () {
for (var key in this) {
if (this.hasOwnProperty(key) && typeof(key) === "string") {
$('#' + key).on('click', this.defer());
}
}
},
'addRecordBtn': function () {
alert("Adding Record");
AddValueToDB();
},
'refreshBtn': function () {
alert("Refresh Records");
ListDBValues();
}
};
称之为
$('#addRecordBtn').on('click', handlers.defer());
$('#refreshBtn').on('click', handlers.defer());
或者自动注册所有内容
handlers.registerHandlers();
这里有一个想法。你可以制作一个存储所有函数的对象,它也知道如何放弃函数
var handlers = {
getHandler: function (str) {
return this[str];
},
'#addRecordBtn': function () {
alert("Adding Record");
AddValueToDB();
},
'#refreshBtn': function () {
alert("Refresh Records");
ListDBValues();
}
};
然后使用此表单应用所有处理程序
$('#addRecordBtn').on('click', handlers.getHandler('#addRecordBtn'));
$('#refreshBtn').on('click', handlers.getHandler('#refreshBtn'));
优化时间如果您想获得真正的乐趣,并按照惯例为每个按钮分配一个唯一的ID
var handlers = {
defer: function () {
return function (){
handlers[$(this).attr('id')](arguments);
};
},
registerHandlers: function () {
for (var key in this) {
if (this.hasOwnProperty(key) && typeof(key) === "string") {
$('#' + key).on('click', this.defer());
}
}
},
'addRecordBtn': function () {
alert("Adding Record");
AddValueToDB();
},
'refreshBtn': function () {
alert("Refresh Records");
ListDBValues();
}
};
称之为
$('#addRecordBtn').on('click', handlers.defer());
$('#refreshBtn').on('click', handlers.defer());
或者自动注册所有内容
handlers.registerHandlers();
你在找这样的东西吗
$('[data-clickhandler]').on('click', function(e) {
var $btn = $(e.currentTarget);
var handler = $btn.data('clickhandler');
alert('Refresh ' + handler);
window[handler] && window[handler](e);
e.preventDefault();
});
现在,您的元素可以指定其clickhandler,如下所示:
<a data-clickhandler="AddValueToDB" href="">...</a>
大约:
<span data-clickhandler="ListDBValues">...</span>
。。。
你在找这样的东西吗
$('[data-clickhandler]').on('click', function(e) {
var $btn = $(e.currentTarget);
var handler = $btn.data('clickhandler');
alert('Refresh ' + handler);
window[handler] && window[handler](e);
e.preventDefault();
});
现在,您的元素可以指定其clickhandler,如下所示:
<a data-clickhandler="AddValueToDB" href="">...</a>
大约:
<span data-clickhandler="ListDBValues">...</span>
。。。
你在找这样的东西吗
$('[data-clickhandler]').on('click', function(e) {
var $btn = $(e.currentTarget);
var handler = $btn.data('clickhandler');
alert('Refresh ' + handler);
window[handler] && window[handler](e);
e.preventDefault();
});
现在,您的元素可以指定其clickhandler,如下所示:
<a data-clickhandler="AddValueToDB" href="">...</a>
大约:
<span data-clickhandler="ListDBValues">...</span>
。。。
你在找这样的东西吗
$('[data-clickhandler]').on('click', function(e) {
var $btn = $(e.currentTarget);
var handler = $btn.data('clickhandler');
alert('Refresh ' + handler);
window[handler] && window[handler](e);
e.preventDefault();
});
现在,您的元素可以指定其clickhandler,如下所示:
<a data-clickhandler="AddValueToDB" href="">...</a>
大约:
<span data-clickhandler="ListDBValues">...</span>
。。。
在执行此操作时,我会更进一步,给出您需要的所有按钮一个类,然后一个处理程序按ID添加所有函数。即,$('.buttons')。on('click',handlers.getHandler($(this.attr('ID'))
@ArtOfCode我在想这是否行得通。这不会绑定到整行所在的任何对象上吗?例如window对象?从未尝试过,我只是想到了这个!让我试试quickly@ArtOfCode我有个主意,我要修改它。你的代码有语法错误…getHandler
不是d中的函数为此,我将更进一步,给出您需要的所有按钮一个类,然后一个处理程序按ID添加所有函数。例如,$('.buttons')。on('click',handlers.getHandler($(this.attr('ID'))
@ArtOfCode我在想这是否行得通。这不会绑定到整行所在的任何对象上吗?例如window对象?从未尝试过,我只是想到了这个!让我试试quickly@ArtOfCode我有个主意,我要修改它。你的代码有语法错误…getHandler
不是d中的函数为此,我将更进一步,给出您需要的所有按钮一个类,然后一个处理程序按ID添加所有函数。例如,$('.buttons')。on('click',handlers.getHandler($(this.attr('ID'))
@ArtOfCode我在想这是否行得通。这不会绑定到整行所在的任何对象上吗?例如window对象?从未尝试过,我只是想到了这个!让我试试quickly@ArtOfCode我有个主意,我要修改它。你的代码有语法错误…getHandler
不是d中的函数为此,我将更进一步,给出您需要的所有按钮一个类,然后一个处理程序按ID添加所有函数。例如,$('.buttons')。on('click',handlers.getHandler($(this.attr('ID'))
@ArtOfCode我在想这是否行得通。这不会绑定到整行所在的任何对象上吗?例如window对象?从未尝试过,我只是想到了这个!让我试试quickly@ArtOfCode我有个主意,我要修改它。你的代码有语法错误…getHandler
不是函数