<tr>
<td>
<a></a>
</td>
</tr>
さて、<tr>
ノードにはイベントリスナーがあります$('tr').click(handler1)
。<a>
しかし、ノードがと同じ動作をすることは望ましくありません。
とにかくjQueryなしでそれを行うことができますか?
<tr>
<td>
<a></a>
</td>
</tr>
さて、<tr>
ノードにはイベントリスナーがあります$('tr').click(handler1)
。<a>
しかし、ノードがと同じ動作をすることは望ましくありません。
とにかくjQueryなしでそれを行うことができますか?
イベントハンドラーを a にも追加し、デフォルトを防止します
$(function(){
$("tr a").click(function(e){
e.preventDefault();
});
});
リンクがデフォルトのアクションを実行し続けたいが、イベントが tr までバブルアップしたくない場合は、まだ打者に変更しe.stopPropagation();
ますe.preventDefault();
jQueryを使用する代わりに、このようなものを見ることができます
document.getElementById('x').addEventListener('click', function(e){
if(e.target.tagName == 'A'){
alert('Clicked A')
}else{
alert('clicked tr')
}
}, false);
デモ:フィドル
jQuery の場合:
$('tr').on('click', function(e){
if($(e.target).is('a')){
alert('clicked a')
} else {
alert('clicked tr')
}
})
デモ:フィドル
$('tr').click(function(e){
if($(e.target).is('#youranchorelementid')){ //you can use class also if you have many elements
e.preventDefault();
}
});
$('tr').click(function(e){
e.preventDefault();
});