javascript - jQuery - 使用全局函数
问题描述
在具有两个按钮(编辑、删除)的 HTML 页面中,我执行 AJAX 调用,然后解析返回的 JSON,并根据返回的 ID 执行编辑或删除。这一切都在一个
$( document ).ready(function() {
...
$('button.icons8.icons8-edit-file').on("click", function(){
var key = $(this).attr('key');
$.ajax({
url: '/ede/' + key + '/json',
method: 'POST',
success: function (response) {
// PARSING THE JSON, EXTRACTING THE ID FROM IT
// AND PERFOMING THE EDIT
}
});
})
...
$('button.icons8.icons8-delete-file').on("click", function(){
var key = $(this).attr('key');
$.ajax({
url: '/ede/' + key + '/json',
method: 'POST',
success: function (response) {
// PARSING THE JSON, EXTRACTING THE ID FROM IT
// AND PERFOMING THE DELETE
}
});
})
...
});
我想要的是一个全局函数,它获取键值,执行 AJAX 调用并根据模式返回值。
$( document ).ready(function() {
...
$('button.icons8.icons8-edit-file').on("click", function(){
var key = $(this).attr('key');
var value = GLOBAL_FUNCTION(key, pattern_edit);
// PERFOMING THE EDIT
})
...
$('button.icons8.icons8-delete-file').on("click", function(){
var key = $(this).attr('key');
var value = GLOBAL_FUNCTION(key, pattern_delete);
// PERFOMING THE DELETE
})
...
});
我把GLOBAL_FUNCTION(p_key, p_pattern)函数放在哪里了?在准备功能内部还是外部?如何从这个全局函数返回响应?如果解析响应的结果产生一个值列表怎么办?
解决方案
我应该把那个
GLOBAL_FUNCTION(p_key, p_pattern)
功能放在哪里?在准备功能内部还是外部?
你可以把它放在你想调用它的所有地方范围内的任何地方。全局是一种可能性,但应尽可能避免。相反,我建议将您的常用函数命名为它们自己的对象。这样您就可以将它们提取到单独的 JS 文件中以便于重复使用。
如何从这个全局函数返回响应?
如果该函数发出 AJAX 请求,则您不能返回任何内容,因为调用应该是异步的。您可以通过提供一个在请求完成时执行的回调函数来解决此问题。
考虑到这些要点,代码将如下所示:
// common.js
var common = (function() {
return {
global_function: function(key, callback) {
$.get('/ede/' + key + '/json', function(response) {
// perform common actions here, if needed..
callback && callback(response);
}
}
};
})();
// in your page:
$('button.icons8.icons8-edit-file').on("click", function() {
var key = $(this).data('key');
common.global_function(key, function(response) {
// Edit response.id...
});
});
$('button.icons8.icons8-delete-file').on("click", function() {
var key = $(this).data('key');
common.global_function(key, function(response) {
// Delete response.id...
});
});
将删除和编辑逻辑提取到公共库中也是有意义的,但我将根据您自己的逻辑将其留给您。
最后,请注意data()
此处的使用,因为创建自己的非标准属性会使您的 HTML 无效。改为使用data-key
。
推荐阅读
- forge - 是否可以使用 Forge 模型衍生 API 获取 IFC4 文件的 AEC 模型数据?
- php - 如何在 php 中获取 Mysql 日月函数等价物
- mongodb - 将来自猫鼬的响应格式化为模型
- d3.js - d3.js:跨多个图表同步选择
- elasticsearch - 使用来自 JSON 文件的查询打开 Kibana 控制台?
- tableau-api - Tableau Desktop 连接到 Tableau Server ..数据源
- python - 在csv,Python中旧索引的开始(旧数据之上)附加数据
- types - Java中的数据类型
- javascript - REACTjs 在输入时捕获输入框数据
- google-bigquery - Google Big Query - 如何将列中空值的特定百分比分配给特定类别?