我的js文件中有以下结构:
$.getJSON("data/file.json")
.done(function(data) {
var loadHTMLfunction = /* some code */
loadHTMLfunction();
// updates display based on user filter selection
$("#select-section").on("change", function() {
$("article").find(".myClass").remove();
loadHTMLfunction();
});
// text swap event
$(".summary-link").on("click", function() {
var el = $(this),
tmp = el.text();
el.text(el.data("text-swap"));
el.data("text-swap", tmp);
});
})
.fail(function(jqxhr, textStatus, error) {
// error handling
});
我的问题是,当页面第一次加载时,我的文本交换事件工作得很好,但一旦用户使用选择事件(该事件是一个选择html元素以更新显示),它就不再工作了。
是我的js文件结构有问题,还是我的代码有问题(或者两者都有!)?
2条答案
按热度按时间91zkwejq1#
我觉得你的函数耦合太紧了。一旦
$.getJSON.done
,你就应该把数据赋值给一个变量,并在 AJAX 调用的作用域之外绑定你的事件处理程序。代码的重构版本可能看起来像这样:yyhrrdl82#
你应该包括
在函数loadHTMLfunction中。
您可能正在执行一些删除元素“.summary-link”的操作,并且您只是第一次绑定事件。