我已经为div分配了一个:active
CSS伪类,以使其对点击和保留具有“响应性”。
.quarter:active{
opacity: 0.5;
}
我想要实现的是使用JQuery模拟长按。
由于没有明显的变色,.trigger("click")
似乎没有成功。我也试过.trigger("focus")
和.trigger("mousedown")
,但似乎我在某个地方陷入困境。
<div id="1" class="quarter green" ></div>
<div id="2" class="quarter red" ></div>
<div id="3" class="quarter yellow" ></div>
<div id="4" class="quarter blue" ></div>
有没有办法实现这一目标,还是必须使用toggleClass
方法?
修改:感谢 nashcheez 回答我使用.trigger("focus")
后跟setTimeout(...{ .blur() })
解决了我的问题。
谢谢大家的快速回复。
答案 0 :(得分:4)
您可以在没有jQuery
且纯css
的情况下执行此操作。你可以在css中提供focus
状态,在html中提供tabindex
属性。
参考代码:
.quarter {
height: 40px;
width: 40px;
display: inline-block;
margin-right: 15px;
cursor: pointer;
}
.quarter:focus {
opacity: 0.5;
}
.green {
background-color: green;
}
.red {
background-color: red;
}
.yellow {
background-color: yellow;
}
.blue {
background-color: blue;
}
<div id="1" class="quarter green" tabindex="1"></div>
<div id="2" class="quarter red" tabindex="1"></div>
<div id="3" class="quarter yellow" tabindex="1"></div>
<div id="4" class="quarter blue" tabindex="1"></div>
这样,点击opacity
后,div
会一直存在,点击外面的任何地方都会返回正常值。
详细了解tabindex
属性here。
答案 1 :(得分:0)
如果您想使用带过渡的toogleclass,这可以起作用
$('.quarter').click(function(){
$(this).toggleClass('active');
})
.quarter:active, .active{
opacity: 0.5;
transition: 1s all ease-in;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="1" class="quarter green" >green</div>
<div id="2" class="quarter red" >red</div>
<div id="3" class="quarter yellow" >yellow</div>
<div id="4" class="quarter blue" >blue</div>
答案 2 :(得分:0)
通常,:active可以应用于<a>
或<button>
元素(因为它们是可点击的),首先需要div
:active
单击div,然后将处于:active 状态,同样在同一情况下,您可以使用此元素上的:focus
显示为活动状态。
第二个选项,您可以使用active
类并将其添加到特定div
。
请参阅下面的代码片段。
$('.quarter.green').trigger('focus');
.quarter:active,
.quarter:focus,
.quarter.active {
opacity: 0.5;
color: red;
}
.quarter:active {
color: green
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="1" class="quarter green" contenteditable="true">1 Using contenteditable property</div>
<div id="2" class="quarter red active">2 Using active class</div>
<div id="3" class="quarter yellow">3</div>
<div id="4" class="quarter blue">4</div>