Jquery $(this)在$(';#something';).css({…})中
我尝试将css与jquery一起应用于div元素,但它不接受$(this)参数。我想知道为什么我不能使用$(this)作为div元素的引用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调用,但我希望这个
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')