ブートストラップ4 - あなたはこの問題にアプローチする必要があります複数のリンクを持つ複数のリンク
は、逆に。イベントリスナーを親の&に配置すると、子を特定するための参照パスが存在しないため、子を見つけることはできません。
代わりに、各子リンクにイベントリスナーを配置します。次に、何がクリックされたかがわかります。クリックした後は、親から手動でclosed.bs.alert
をトリガーすることができます。子供から簡単に検索できます。
$('.alert a').on('click', function (e) {
$(e).parent().trigger('closed.bs.alert');
window.open($(e.target).attr('href'));
});
BS4-ML:https://codepen.io/benjaminwfox/pen/vejLzz
ブートストラップ4
あなたはあなたのリンクのそれぞれにイベントリスナーを追加することにより、ブートストラップパラダイムの中でそれを維持することができます。これは基本的に、リンクした質問の回答と同じですが、特定のIDではなくクラスセレクタに基づいてリスナを適用するだけです。この方法は、あなたは、アラートの削除を処理するために何かをする必要はありません。:
$('.alert').on('closed.bs.alert', function (e) {
console.log('Closed, alerted', $(e.target).children('a').attr('href'));
window.open($(e.target).children('a').attr('href'));
})
BS4:https://codepen.io/benjaminwfox/pen/veXOEL
4と非常に似てブートストラップ3
が、あなた'LL
<div class="alert alert-danger">
<strong>Oh snap!</strong> Links in Bootstrap alerts are broken:
<a data-dismiss="alert" data-href="http://www.msn.com" href="#">Go to Google on new tab.</a>
</div>
$('.alert').on('closed.bs.alert', function (e) {
window.open($(e.target).children('a').attr('data-href'));
});
BS3:https://codepen.io/benjaminwfox/pen/bowQQy
URL用のカスタムタグを使用する必要があります
非ブートストラップ・オプション
あなたは全体のプロセスを独自のコントロールの多くを望んでいた場合は、後にしているリンクの動作を作成する独自のJavaScriptメソッドを書くことです。そのようなマークアップでそれを実装します。
this
は
<a>
タグへの参照ですので、あなたが
element
スタイルに今何を行うことができ、およびURLが
p_url
として渡されますので、リンクを開くことができ
<div class="alert alert-danger">
<strong>Oh snap!</strong> Links in Bootstrap alerts are broken:
<a href="#" onclick="jsfunc(this, 'http://google.com')">Go to Google on new tab.</a>
</div>
:
function jsfunc(element, p_url) {
element.parentNode.style.display = 'none';
window.open(p_url);
}
NO BS:https://codepen.io/benjaminwfox/pen/GMjgbq
あなたの最初の選択肢は完璧に動作します! 2番目の方法はうまくいきません(リンクを隠し、アラートではなく、element.parentElement.style.display = 'none';に変更することで簡単に解決できます)。ご協力いただきありがとうございます! –
うれしい最初の1つが働いた! 2番目のものが更新され、正しい要素が隠されるようになりました。 – Ben
悪いニュース。彼らは完全にブートストラップ4で動作します。3.3.X上の実際のコードベースで作業しているので、動作しません。 –