Reputation: 881
I want to achieve an effect where a close button appears after some time of hovering the mouse on a div. How could I do that? by the way, I'm so new to jQuery.
Here is an example of something similar to what I want
That "x" in the corner I want to appear in one of my designs.
Thanks to everyone
What I have done so far:
jQuery:
$("#slider #content").on("hover", '.element', function(evt) {
var top, left;
top = $(this).offset().top;
left = $(this).offset().left;
$(".close-button").css({"top":top, "left":left});
$(".close-button").show();
});
The div and the styling of the div I guess is irrelevant if not, I would post it here.
Upvotes: 1
Views: 11398
Reputation: 657
A lot hinges on your HTML and CSS. For now, let's assume that the box is a div element, and the close button is a child div within the box. You might do something like this...
$(".boxes").hover(
//do this on mouse over...
function () {
var me = $(this);
me.find('.closeButton').delay(1000).fadeIn(500);
},
//do this on mouse out...
function () {
var me.find('.closeButton').fadeOut(100);
}
);
Upvotes: 0
Reputation: 253308
Here's one way of doing this, given the following HTML:
<a href="#" class="modalShow">show modal</a> <a href="#" class="modalShow">show modal</a>
<div class="modal">
<span class="close">X</span>
<p>Some text in the first modal div</p>
</div>
<div class="modal">
<span class="close">X</span>
<p>Some text in the second modal div</p>
</div>
And the CSS:
.modal {
display: none;
width: 50%;
padding: 0.5em;
min-height: 6em;
border: 10px solid #000;
border: 10px solid rgba(0,0,0,0.5);
position: absolute;
top: 20%;
left: 50%;
margin-left: -25%;
}
span.close {
display: none;
position: absolute;
top: -2.5em;
left: -2.5em;
width: 2em;
height: 2em;
text-align: center;
line-height: 2em;
border: 10px solid #000;
border: 10px solid rgba(0,0,0,0.5);
border-radius: 2em;
background-color: #fff;
cursor: pointer;
}
And the jQuery:
$('a.modalShow').click(
function() {
// finds which link was clicked, and therefore which modal to show
var i = $(this).index('.modalShow');
// fades all the modal elements out
$('.modal').fadeOut(1000);
// fades the relevant modal in
$('.modal').eq(i).fadeIn(1000);
});
$('.modal').hover(
function() {
// while hovering over the modal, it fades the close element in after a delay
$(this).find('.close').delay(1000).fadeIn(500);
},
function() {
// after leaving/mouseout of the the modal, has a delay and then fades the close out
$(this).find('.close').delay(1000).fadeOut(500);
});
$('span.close').click(
function(){
// clicking the close span causes the closest ancestor modal to fadeout
$(this).closest('.modal').fadeOut(1000);
});
References:
Upvotes: 8