我尝试将带有jquery的css应用于div元素,但它不接受$(this)参数。我想知道为什么我不能使用$(this)作为div元素的引用。
blabla.css({
'top': $(window).width()/2-$(this).width()/2+'px',
'left': $(window).width()/2-$(this).width()/2+'px'
});
错误:未捕获的TypeError:对象#没有方法'width'
提前致谢..
ps:我知道我可以在$()
内部使用直接ID调用,但我希望this
可以使用。
答案 0 :(得分:2)
请注意,您没有运行回调,而是将对象传递给.css
。因此,this
不会引用blabla
- 元素 - 而是引用当调用包含此代码的函数时定义的当前上下文(并且可能会有所不同)。此上下文没有.width
,然后您收到错误。
您必须明确引用宽度,如blabla.width()
答案 1 :(得分:1)
你可能会尝试
$("#blabla").css('top',function(){
alert($(this).width());
});
答案 2 :(得分:1)
如果$(this)
为blabla
,为什么不使用blabla.width()
代替$(this).width()
?
答案 3 :(得分:0)
我也需要一个解决方案。我想用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)
的概念保持不变。