質問する
477 次
6 に答える
3
このようなことができます。
$('div, a').click(function(e) {
if($(this).is('a')) return false;
console.log('click');
});
于 2012-10-03T20:09:08.713 に答える
2
バインドされた要素のみがハンドラーをトリガーするようにする場合は、これをハンドラーの先頭に配置します。
if (this !== e.target)
return;
ネストされた要素がクリックされた場合、コードはすぐに戻ります。(ハンドラーにパラメーターを定義することを忘れないでください。)e
于 2012-10-03T20:09:42.337 に答える
1
$("#parent *").on("click", function(e) {
if ( e.target.nodeName.toLowerCase() == 'a' ) {
e.stopPropagation();
}
... your original code ...
});
于 2012-10-03T20:07:00.903 に答える
0
これがフィドルです:http: //jsfiddle.net/phillipkregg/65fNS/
これはかなり基本的なことです-現在のコードが何であるかわからないので-しかし、stopPropagation()で問題は発生していません。
実験するために、を削除するe.stopPropagation()
と、リンクをクリックすると、最初にその関数が起動され、次にdivの関数が起動されることがわかります。
于 2012-10-03T20:25:54.467 に答える
0
クリックした要素は target.nodeName で確認できます
$("div").click(function(e){
if(e.target.nodeName == "div" $(e.target).hashClass('validDiv')){
// do stuff
}
else{
return false;
}
});
于 2012-10-03T20:07:08.467 に答える
0
私が好む方法は、クリック イベントを個別の関数に「ハイジャック」することです。リンクが最初に起動されるため<a>
、onclick がチェックするページ内にブール値を設定し<div>
、以前のクリックが検出された場合は単純に false を返すようにすることができます。
var linkClicked = false;
function LinkClick(something)
{
linkClicked = true;
// Do something
}
function DivClicked(something)
{
if (linkClicked)
{
linkClicked = false;
return false;
}
// Do something else
}
于 2012-10-03T20:09:11.323 に答える