jQuery - отключение щелчка функционирует на родительском элементе

у меня есть структура как это

<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>

когда я нажимаю на кнопку, событие щелчка TR, также названное. там какой-либо путь состоит в том, чтобы отключить событие щелчка на родительском элементе? единственное решение, которое я нашел, состоит в том, чтобы добавить класс к родительскому элементу и в его проверке функции щелчка на него. например:

 <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>
8
задан samrockon 11 August 2010 в 15:44
поделиться

3 ответа

используйте .stopPropagation ()

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

демонстрационный пример

14
ответ дан 5 December 2019 в 08:50
поделиться

Остановить распространение?

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

Это предотвратит распространение события щелчка через его родителей.

2
ответ дан 5 December 2019 в 08:50
поделиться

.stopPropagation() будет работать, но если вы не хотите останавливать все событие, то вы можете просто запустить его, если цели совпадают.

См. этот поток.

3
ответ дан 5 December 2019 в 08:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: