クリックするとテキストが変わるリンクを作成しています。すべての処理が完了したら、リンク テキストを元のテキストに戻してほしい。正常に動作していましたが、コードが 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
イベントを別の関数に入れると、問題が発生しますか。どうぞ、どんな助けでも大歓迎です。ありがとう。