jQuery Mobile прекращает распространение подписки - PullRequest
0 голосов
/ 03 октября 2018

Я создаю страницу, где хочу использовать тапхолд для запуска contextMenu.Тем не менее, когда элемент находится внутри родительского элемента, метка-указатель распространяется на этого родительского элемента.Я хочу предотвратить это.

, поэтому, когда пользователь удерживает дочерний элемент, должна запускаться ТОЛЬКО функция дочернего удержания, а когда пользователь удерживает родительского элемента, ТОЛЬКО родитель должен запускаться.

Я пробовал el.stopPropagation () и el.stopImmediatePropagation (), но оба не остановили распространение метки на родителя.

Эта скрипка покажетэта проблема.Удержание зеленого ребенка также вызывает метку красного родителя

Скрипка отображает два деления:

<div class='parent'>
   <div class='child'></div>
</div>

и использует этот код:

$('.parent').on('taphold', function( el ){
   alert( 'parent' );
});

$('.child').on('taphold', function( el ){
   alert( 'child' );
});

, если нажатьи удерживайте зеленый div, красный тоже сработает, а это не то, что я хочу.

1 Ответ

0 голосов
/ 04 октября 2018

Ну, taphold не так просто, как другие события, потому что для его распознавания необходимо запустить timer, который должен проверять истекшее время от начального давления экрана (JQM)использует свое собственное событие vmousedown).Таким образом, после истечения tapholdThreshold - обычно 750 мс - каркас может вызвать событие taphold.

Я полагаю, что вы получите решение perfect . Возможно, вам придется исправить JQM, в противном случае вот быстрый обходной путь:

$('.parent').on('taphold', function( e ) {
    if(e.target == e.currentTarget) {
        // do the action
    }
});

В любом случае taphold будет поднят, но Вы можете отследить источник и пропустить выполнение Вашего кода.

...