div
には、div
を隠すonclick
があります。は、onclickイベントを持つdivの中にリンク機能を保持します。
div
の中にリンクがある場合、onclick
がクリックを盗み出すため、リンクが機能しません。
希望の結果:div内の任意の場所でクリックが行われた場合、divが非表示になるリンク。リンク上でクリックが行われた場合、_blankウィンドウでリンクを開き、divを表示したままにします。
javascriptでこれを処理する方法はありますか?
div
には、div
を隠すonclick
があります。は、onclickイベントを持つdivの中にリンク機能を保持します。
div
の中にリンクがある場合、onclick
がクリックを盗み出すため、リンクが機能しません。
希望の結果:div内の任意の場所でクリックが行われた場合、divが非表示になるリンク。リンク上でクリックが行われた場合、_blankウィンドウでリンクを開き、divを表示したままにします。
javascriptでこれを処理する方法はありますか?
、あなたがevent.stopPropagationを呼び出したい、または真のいずれかにe.cancelBubbleを設定しますあなたのブラウザが好きです。これにより、あなたの部門にバブリングすることを防ぐことができます。
document.getElementById("thelink").onclick = function (e) {
window.open();
if (e.stopPropogation)
e.stopPropogation();
if (e.cancelBubble != null)
e.cancelBubble = true;
};
デモが動作しません。こんにちは、 "DIV"アラートをクリックすると警告が表示されます –
実際はFFでは動作しませんが、Chromeでは動作します。 –
@UnoMeinAme - 私の答えは –
document.getElementById('yourlinksid').onclick = function(e){
// ... pop your window ...
/* the following prevents the event from "bubbling up"
to the div's event handler */
if(!e.stopPropagation) {
e.cancelBubble = true;
return;
}
e.stopPropagation();
};
検証:リンクのクリックハンドラ内
このJS/jQueryマッシュは機能しません。 'click()'は 'getElementById()'コンテキストには存在しません。 –
リンクを制御する場合、最も簡単な方法はonclick = "event.stopPropagation();"を追加することです。リンクのデフォルト効果を妨げることなく、divを停止させないようにします。
また、リンクにテキストのみが含まれている場合、divのクリックイベントでイベントのターゲットのタグ名を確認してリンクかどうかを確認できますが、もっと複雑なものがある場合は、ドームツリーをイベントターゲットからdivに移動して、リンクが存在しないことを確認します。
本質的に同じもの:http://stackoverflow.com/questions/387736/how-to-stop-event-propagation-with-inline-onclick-attribute –