我正在创建一个在单击时更改文本的链接。我希望在所有处理完成后链接文本变回原始文本。它工作正常,但代码遍布我的 js 文件,所以我试图将它抽象成一个函数。这就是函数,textToggle
。在 textToggle 函数中,我们发布了一个事件。这个事件是我无法在正确的时间触发的事件。
var textToggle = function(data) {
var original_text = $(data.element).text();
var id = data.id;
var $element = $(data.element);
$element.text(data.replacement_text);
$('body').on(data.event, function(e) {
e.preventDefault();
$this.text(original_text);
});
};
这是设置 textToggle 的函数。在函数结束时,我们正在触发另一个事件“clinical.status”。
$('#clinicalPatients').on('click', '[data-role="auth-process"]', function(e) {
e.preventDefault();
var $this = $(this);
var _id = $target.attr('id');
textToggle({
id: _id,
element: $this,
replacement_text: "Processing...",
event: "clinical.status.finished"
});
$('#clinicalPatients').trigger('clinical.status', [{
id: _id,
target: $target,
action: _type
}]);
});
最后clinical.status
是当我想在 toggleText 中触发事件时,clinical.status.finished
. 这是该事件的代码。
$('body').trigger('clinical.status.finished', [{
id: originalId
}]);
clinical.status.finished
没有在正确的时间触发。代码中没有其他地方使用它,所以它必须是我设置它的方式。如果我将该事件排除在toggleText
函数之外,并将其放在我设置函数的toggleText
函数中,那么一切都会像预期的那样工作。通过将on
事件放入单独的函数中,这会导致问题。请,任何帮助将不胜感激。谢谢。