【发布时间】:2018-03-14 07:36:41
【问题描述】:
我有一个在其 LI 上具有悬停效果的 UL。悬停时,左侧会出现一个红色的 div,当您单击 LI 时,它会将一个类切换到其中的文本。在桌面版本上一切正常,但是当我切换到移动版本时,第一次点击应该只激活悬停效果。取而代之的是,它会触发悬停并立即切换一个类。我希望在移动版本上第一次点击激活悬停,然后如果它仍然处于活动状态,下一次点击切换类。请在移动版本上尝试代码,我的意思很清楚。 谢谢
$('ul').on('click', 'li', function () {
$(this).toggleClass('completed');
});
$('ul').on('click', 'div', function (event) {
$(this).parent().fadeOut(250, function () {
$(this).remove();
});
//prevent event bubbling
event.stopPropagation();
});
.container {
width: 360px;
margin: 0 auto;
border: 1px solid black;
}
ul{
list-style: none;
padding:0;
margin:0;
}
li{
width: 100%;
border: 1px solid black;
display: flex;
}
li div{
background-color:red;
width:0;
transition: 0.1s linear;
display:inline-block;
}
li:hover div{
width: 40px;
}
.completed {
color: grey;
text-decoration: line-through;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<h1>Groceries</h1>
<ul>
<li><div></div><p>carrot</p></li>
<li><div></div><p>onion</p></li>
<li><div></div><p>tomato</p></li>
</ul>
更新:我快搞定了,第二次点击时第一次切换,问题是下一次切换也发生在双击时:
var isMobile = false;
var isClicked = 0;
$('ul').on('click', 'li', function () {
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera
Mini/i.test(navigator.userAgent) ) {
isMobile = true;
isClicked++;
}
if(!isMobile || isClicked > 1){
$(this).toggleClass('completed');
isClicked = 0;
}
});
【问题讨论】:
-
你想在点击而不是悬停时显示红色 div 吗?
-
在移动版本上,只有第一次点击会激活悬停效果。你不能用另一种方式在手机上调用悬停效果。我想要第一次点击它并在元素上的下一次点击切换类。
标签: javascript jquery html