私の知る限りでは、私はこれがtouchstart
イベントにパッシブイベントリスナーとイベントの伝播に関係していると思います。私はそうのようなあなたも、ハンドラにprevenDefault
を追加しようとしたとき:
$(function() {
$(document).on('click touchstart', '.js-next', function(e){
e.preventDefault();
$('.js-tab').click();
});
});
私はクロームでこの警告が出ます:受動的なものとして扱われているターゲットに起因する受動的なイベントリスナーの内部でpreventDefaultにできません
を。 falseに受動的
AddEventListenerOptionsのデフォルトを:あなたはドキュメントでこれを見ることができますそのリンクに続きhttps://www.chromestatus.com/features/5093566007214080
を参照してください。この変更を開始すると、ドキュメントに追加されたtouchmoveリスナーは、デフォルトでpassive:trueに設定されます(preventDefaultの呼び出しは無視されます)。 jQueryのaddEventListener
に渡すオプションとの継続的な問題があることを言うhttps://stackoverflow.com/a/39187679/1819684:
それを追いかけ、私はSOにこの答えに出くわしました。意味は、現時点では、あなたはjQueryでそれを行うことができず、passive: false
と設定します。だから私はこれにあなたの例のコードを作り直し:https://jsfiddle.net/w9h4an81/
$(function() {
document.addEventListener('touchstart', function(e) {
e.preventDefault();
$('.js-tab').click();
}, {passive: false});
$(document).on('click', '.js-next', function(e){
$('.js-tab').click();
});
});
だけjQueryを使ってこれを行うには、このような何かをする必要があります:https://jsfiddle.net/6377wdhc/あなたがdocument
に聞くことができません。
$(function() {
$('.js-next').on('click touchstart', function(e){
e.preventDefault();
$('.js-tab').click();
});
});
避けたいのはどの効果ですか? 「ページが指の下の領域に移動する」または「ボタンまたはリンクがある場合はアクティブになります」 – gforce301
私はお詫びします、私はtabberを持っていると言って忘れて、私は1つのタブのボタンをクリックし、tabberスイッチ、そして私は2番目のタブのボタンを押す。両方とも。 – Dan
クリックハンドラーを次のように変更してみてください: '$(document).on( 'touch touchstart'、 'element'、function(e){e.preventDefault();/* Some code * /});' – gforce301