0

我正在创建一个在单击时更改文本的链接。我希望在所有处理完成后链接文本变回原始文本。它工作正常,但代码遍布我的 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事件放入单独的函数中,这会导致问题。请,任何帮助将不胜感激。谢谢。

4

0 回答 0