Jquery $(this)在$(';#something';).css({…})中

Jquery $(this)在$(';#something';).css({…})中,jquery,this,Jquery,This,我尝试将css与jquery一起应用于div元素,但它不接受$(this)参数。我想知道为什么我不能使用$(this)作为div元素的引用 blabla.css({ 'top': $(window).width()/2-$(this).width()/2+'px', 'left': $(window).width()/2-$(this).width()/2+'px' }); 错误:未捕获类型错误:对象#没有方法“宽度” 提前谢谢 ps:我知道我可以在$()中使用直接id调用,但我希望这个

我尝试将css与jquery一起应用于div元素,但它不接受$(this)参数。我想知道为什么我不能使用$(this)作为div元素的引用

blabla.css({
'top': $(window).width()/2-$(this).width()/2+'px', 
'left': $(window).width()/2-$(this).width()/2+'px'  
});
错误:未捕获类型错误:对象#没有方法“宽度”

提前谢谢


ps:我知道我可以在
$()
中使用直接id调用,但我希望
这个
可以工作。

注意,您没有运行回调,而是将对象传递给
.css
。因此,
this
不是指
blabla
——元素,而是指调用包含此代码的函数时定义的当前上下文(这可能会有所不同)。此上下文没有
.width
,然后您会得到一个错误

您必须显式引用宽度,如您可能尝试的
blablabla.width()

$("#blabla").css('top',function(){
   alert($(this).width());
 });​

如果
$(this)
blablabla
,为什么不使用
blablabla.width()
来代替
$(this.width()

我也需要一个解决方案。我想使用jQuery将浮动div居中。我创建了名为onload和on window resize的函数:

$("div[class~='floatCenter']").each(function () {
    var elementWidth = $(this).outerWidth() / 2;
    var parentWidth = $(this).parent().outerWidth() / 2;
    var marginPixels = parentWidth - elementWidth;
    $(this).css("margin-left", marginPixels + "px");
});

我最终选择了另一种方法,使用CSS将我的div居中,但使用
$(this)
的概念保持不变。

请提供这段代码的上下文(调用它的位置以及如何调用该函数)。只有这样,我们才能知道这个
指的是什么,并给出适当的解决方案。或者你只是希望
这个
指的是
blabla
?什么是blabla?(我认为@Matt的思路是对的(你应该取消删除你的anser;))我猜你在匿名函数之类的东西里面,
这个
指的是它,而不是你的元素。假设:blablabla=$(“#somediv”),因为blablabla现在类似于:FW.model.box.div。它太长了,只需将其存储在局部变量中,如
var bla=$('FW>model>box>div')