0
私はページ上にシンプルなライトボックスを持っています。クローズアイコンにはいくつかのクラスがあります。.closeIt
です。ユーザーが閉じるアイコンをクリックすると、フォーカスをリンク要素に戻して、ライトボックスをトリガーします。jQuery:ライトボックス閉じるイベント処理
トリガーリンクの入力とクローズアイコンのクラス名を入力する機能を追加しようとしました。
function focusBack(triggeringLinkId,closingLinkClass){
$(closingLinkClass).click(function() {
$(triggeringLinkId).focus();
});
}
、各ライトボックスのために、私は手動で戻って、このような関数を呼び出し:
focusBack('#someLink','.closeIt')
私だけのページに1をライトボックスを持っている場合は、このアプローチはうまく動作しますが、私は、複数のライトボックスを持っている場合最後に呼び出された関数にバインディングを開始し、現在どのライトボックスを閉じても、フォーカスは最後にfocusBack
関数と呼ばれるトリガーリンクに戻ります。
このような状況を処理するには、どのような方法が最適ですか?
function focusBack(triggeringLinkId,closingLinkClass){
$(triggeringLinkId).click(e){
$(e.target).addClass('triggeringLinkClass');
}
$(closingLinkClass).click(function() {
$(triggeringLinkClass).focus();
$(triggeringLinkClass).removeClass('triggeringLinkClass');
});
}
が、私はそれが最善の方法だとは思わないが、それは私のために問題を解決:
クリックリスナーを閉じるボタンを追加または削除することは良いアイデアであるかどうかはわかりませんが、他のクリックアクションを上書きする可能性があるためです。しかし、フォーカスのたびにクリックリスナーを削除するには '$(closingLinkClass).off(" click ")'を使うことができます。 –