I have assigned to a div an :active
CSS pseudo class, to make it "responsive" on clicks and holds.
.quarter:active{
opacity: 0.5;
}
What I want to achieve is to simulate a long click with JQuery.
The .trigger("click")
doesn't seem to do the trick since there is no visible discoloration. I have also tried with .trigger("focus")
and .trigger("mousedown")
but it seems I mess up somewhere.
<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>
Is there a way to achieve that or do I have to use a toggleClass
approach?
Edit: Thanks to nashcheez answer I solved my problem using the .trigger("focus")
followed by a setTimeout(...{ .blur() })
.
Thank you all for the quick responses.
You can do it without jQuery
and in pure css
. You can just provide it a focus
state in css and a tabindex
attribute in the html.
Refer code:
.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>
This way your opacity
persists on click of the div
, and returns back to the normal value on clicking anywhere outside.
Read more about the tabindex
attribute here.
Generally, :active can be applied to <a>
or <button>
elements (as they are clickable), to make a div
:active
first you need to click on div it, then will be in :active state, also in the same case you can use :focus
on this element to show as active.
Second option you can use active
class and add it on particular div
.
See the below snippet with its working.
$('.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>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With