2012-04-25 93 views
1

我试图运行一些有条件的javascript来定位div,如果点击某张照片右侧的标记,标记工具提示将位于标记的左侧,否则将位于标记的右侧。因此,如果标记在右侧,我指示工具提示位于标记位置()左侧,减去工具提示的宽度。然而,工具提示宽度总是会改变,这取决于里面的文本,并且调用jquery的width()函数不会返回适当的宽度。有想法该怎么解决这个吗?这里的例子:CSS,Jquery - 绝对定位的div的宽度返回为0

http://bit.ly/IkbWl6

,这里是我的代码:

var tagPos = $photo_tag.position(); 
if (isNarrow == true){ 
    var photoWidth = $('#photo_box').width(); 
    if (tagPos.left > photoWidth/2){ 
     var brandWidth = $('.brand_name').width(); //MH - NOT WORKING 
     $brand_name_container.css({'left' : tagPos.left-brandWidth, 'top' : tagPos.top+brandAdjTop}); 
    } else { 
     $brand_name_container.css({'left' : tagPos.left+brandAdjLeft, 'top' : tagPos.top+brandAdjTop}); 
    } 
} 
+0

我没有在您发布的链接的html中看到'.brand_name_relative'类? – dm03514 2012-04-25 14:20:40

+0

啊,对不起 - 更正的代码 – mheavers 2012-04-25 14:22:02

+0

看看是否有帮助:http://stackoverflow.com/questions/10277323 – 2012-04-25 14:22:08

回答

2

以防万一,但你提示目前可见你要求它的宽度是多少? 工具提示必须可见才能被渲染引擎渲染,而不会有任何大小。

你可以做这样的事情,例如

$('#mytooltip').show(0); 
width = $('#mytooltip').width(); 
$('#mytooltip').hide(0); 

这将足以渲染发生,但它不会被真正显示给用户的时间。

+0

我也这么认为,所以我实际上移动了我的代码的显示部分高于一切,但仍然没有'似乎解决了这个问题。 – mheavers 2012-04-25 14:29:50