色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

jquery 長按和點擊事件沖突

榮姿康1年前10瀏覽0評論

在使用jQuery進行移動端開發(fā)的時候,我們經(jīng)常會用到長按和點擊事件,但是如果不小心處理不當就會出現(xiàn)長按和點擊事件沖突的情況。

舉個例子,假設(shè)我們有一個需要長按和點擊事件的按鈕:

<button id="myBtn">長按/點擊我</button>

我們可以使用下面的代碼來分別綁定長按和點擊事件:

$('#myBtn').on('touchstart', function(e){
e.preventDefault();
//長按代碼
setTimeout(function(){
//長按后執(zhí)行的代碼
},1000);
});
$('#myBtn').on('click', function(e){
e.preventDefault();
//點擊代碼
});

在這個例子中,我們使用了touchstart事件來監(jiān)聽長按事件,同時使用click事件監(jiān)聽點擊事件。并且通過e.preventDefault()方法來防止事件冒泡和默認行為的發(fā)生。

然而,當我們在按鈕上長按時,會發(fā)現(xiàn)長按事件被觸發(fā),但是在松開手指之后還會觸發(fā)一次點擊事件。這是因為在觸發(fā)長按事件的時候,touchstart和touchend事件都被觸發(fā)了,而touchend事件又會觸發(fā)click事件。

這時候我們需要對代碼進行一些改動,使用e.stopPropagation()方法來阻止事件冒泡。修改后的代碼如下:

$('#myBtn').on('touchstart', function(e){
e.stopPropagation();
//長按代碼
setTimeout(function(){
//長按后執(zhí)行的代碼
},1000);
});
$('#myBtn').on('touchend', function(e){
e.stopPropagation();
e.preventDefault();
});
$('#myBtn').on('click', function(e){
e.stopPropagation();
e.preventDefault();
//點擊代碼
});

在修改后的代碼中,我們使用了touchend事件來清除長按事件,并且阻止了事件的默認行為,同時也用stopPropagation()方法阻止了事件冒泡。這樣就可以解決長按和點擊事件沖突的問題了。