Событие jquery touchend для всего документа, кроме div, по которому щелкают

Я хотел показать / скрыть элемент по нажатию div в ipad/ мобильных устройствах. Я использовал touchstart и touchend события. Но я хочу остановить событие touchend для элемента div ".view-list", чтобы ".viewlist-popup" не скрывался сразу.

<div class="view-list">VIEW LIST
          <div class="viewlist-popup">
          <ul>
                <li>1</li>
                <li>2</li>
                <li>3</li>
              </ul>
          </div>
</div>


$('.view-list').bind('touchstart', function() {
  $(this).find('.viewlist-popup').show();
 });

$(document).bind('touchend', function() {
  $('.view-list').find('.viewlist-popup').hide();
});

1 ответ

Вы должны отфильтровать его по цели события:

$(document).bind('touchend', function(e) {
  if($(e.target).hasClass('view-list')) return;
  $('.view-list').find('.viewlist-popup').hide();
});

И если вы не хотите скрывать это при прикосновении к любому из его потомков:

if($(e.target).closest('.view-list').length) return;
Другие вопросы по тегам