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