I am trying to position a popup div below:
<div style="display:none;height:200px;width:200px;border:3px solid green;" id="popup">Hi</div>
based on the clicking of another div.
I am running this on document .ready
$('div#d').bind('click', function (event) {
var offset = $(this).offset();
$('#popup').css('left',offset.left);
$('#popup').css('top',offset.top);
$('#popup').css('display','inline');
});
but the above will not even display the div
Try adding position: absolute
to your div. Make sure it isn't located within another div that has relative positioning.
<div style="position: absolute; display:none;height:200px;width:200px;border:3px solid green;" id="popup">Hi</div>
Top and left only work for elements with relative
, absolute
or fixed
positioning.
The problem lie in the fact that offset() do not return the correct mouse position, try event.pageX and event.pageY instead:
$(document).ready(function(){
$('div#d').bind('click', function (event) {
$('#popup').css('left',event.pageX); // <<< use pageX and pageY
$('#popup').css('top',event.pageY);
$('#popup').css('display','inline');
$("#popup").css("position", "absolute"); // <<< also make it absolute!
});
});
See here.
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