我有div
class="centerMessage"
。这个div
在加载页面后的某个点插入到DOM中。我想更改此div
上的CSS以使其居中。我尝试了下面的CSS功能,但它没有用。有人知道这样做的方法吗?
function centerPopup() {
var winWidth = $(window).width();
var winHeight = $(window).height();
var positionLeft = (winWidth/2) - (($('.centerMessage').width())/2);
var positionTop = (winHeight/2) - (($('.centerMessage').height())/2);
$('.centerMessage').live( function(){
$(this).css("position","absolute");
$(this).css("top",positionTop + "px");
$(this).css("left",positionLeft + "px");
});
}
答案 0 :(得分:3)
如果我对您要实现的目标的假设是正确的,那么您不需要任何Javascript来执行此操作。它可以通过一些简单的CSS来实现。
.centerMessage { position: absolute; top: 50%; left: 50%; margin-top: -150px; /* half of the height */ margin-left: -300px; /* half of the width */ width: 600px; height: 300px; background: #ccc; }
答案 1 :(得分:1)
.live()不接受JUST函数。如果你想在现场发生一些事情,它也需要一个事件,比如click
。如果您希望每个.centerMessage
始终发生某些事情,则需要插件.livequery()
答案 2 :(得分:0)
我相信以下内容适用于FF& Webkit的。
div.centerMessage{
position: absolute;
width: /* width */;
height: /* height */;
top: 0px;
bottom: 0px;
left: 0px;
right: 0px;
margin: auto;
}
答案 3 :(得分:0)
我知道这已经回答了,但我想我会提供一个 working jsFiddle demo ,使用像最初想要的那样的JavaScript,而不是使用< strong> live(),我使用 setInterval():
首先,我们需要声明一些变量供以后使用:
var $centerMessage,
intervalId;
OP的问题是他们不知道什么时候会创建div,所以考虑到这一点,我们创建了一个函数来做到这一点并通过 setTimeout()来调用它模拟这个div创作:
function createDiv() {
$('<div class="centerMessage">Center Message Div</div>').appendTo("body");
}
$(function() { setTimeout("createDiv()", 5000); });
最后,我们需要创建一个函数,使用 setInterval()以100ms的速率检查div是否已经创建并在创建时,通过修改div来实现jQuery的:
function checkForDiv() {
$centerMessage = $('.centerMessage');
if ($centerMessage.length) {
clearInterval(intervalId);
var $window = $(window),
winHeight = $window.height(),
winWidth = $window.width(),
positionTop = (winHeight / 2) - ($centerMessage.height() / 2),
positionLeft = (winWidth / 2) - ($centerMessage.width() / 2);
$centerMessage.css({
"display" : "block",
"position" : "absolute",
"top" : positionTop.toString() + "px",
"left" : positionLeft.toString() + "px"
});
}
}
$(function() { intervalId = setInterval(checkForDiv, 100); });
答案 4 :(得分:0)
尝试使用此
$('。centerMessage')。live('click',function(){
答案 5 :(得分:0)
试试这个
$('#foo').on('click', function() {
alert($(this).text());
});
$('#foo').trigger('click');
OR
$('#foo').live('click', function() {
alert($(this).text());
});
$('#foo').trigger('click');