Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jquery - disabling click function on parent element

Tags:

jquery

i have structure like this

<table><tr><td></td><td><input type="button" name="button"></td></tr></table>
<script> 
$('tr').click(function(){window.alert('tr');})
$(':input').click(function(){window.alert('input');})
</script>

when i click on the button, tr click event also called. is there any way to disable click event on parent element? the only solution i found is to add class to parent element and inside its click function check for it. for example:

 <script> 
$('tr').click(function(){ if(!$(this).hasClass('disable')) { window.alert('tr');  }  $(this).removeClass('disable');  })
$(':input').click(function(){window.alert('input'); $(this).closest('tr').addClass('disable');})
</script>
like image 962
samrockon Avatar asked Aug 11 '10 15:08

samrockon


3 Answers

use .stopPropagation()

$('tr').click(function(){
   window.alert('tr');
});
$(':input').click(function(e){
   e.stopPropagation();
   window.alert('input');
});

demo

like image 77
Reigel Avatar answered Nov 10 '22 12:11

Reigel


.stopPropagation() would work but if you don't want to stop the entire event then you can just fire it if the targets match.

See this thread.

like image 21
UpHelix Avatar answered Nov 10 '22 11:11

UpHelix


Stop Propagation?

http://api.jquery.com/event.stopPropagation/

This will prevent the click event from bubbling through its parents.

like image 2
Bob Fincheimer Avatar answered Nov 10 '22 12:11

Bob Fincheimer