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