$(这个)里面$('#something')。css({...})

时间:2012-03-12 10:04:07

标签: jquery this

我尝试将带有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可以使用。

4 个答案:

答案 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)的概念保持不变。