使用jQuery计算textpixel宽度

时间:2012-09-10 12:54:33

标签: jquery width tooltip

我想在菜单中添加一个简单的工具提示。如何计算我的文本中的像素数 工具提示有吗?

HTML:

<nav>
    <ul>
        <li>
            <a href="#" title="Item 1 text">Item 1</a>
        </li>
        <li>
            <a href="#" title="Item 2  longer text" >Item 2</a>
        </li>
        <li>
            <a href="#" title="Item 3 text text text">Item 3</a>
        </li>
    </ul>
</nav>

的CSS:

nav{
    position: fixed;
    left:0;
    right:0;
    bottom:0;
    height:30px;
    background: grey;
}
ul{
    width: 300px;
    margin:0 auto;
}
li{
    float:left;
    position:relative;
}
span{
    position:absolute;
    left: 50%;
    bottom: 30px;
    background:black;
    border: solid 1px grey;
    border-bottom:none;
    display:none;
    color:white;
}
li:hover span{
    display:block;
}
a{
    display:block;
    text-decoration:none;
    color: white;
    line-height: 30px;
    padding: 0 10px;

}​

jQuery:

$(document).ready(function(){
    $('nav li').each(function(){
        $(this).append('<span>'+$(this).find('a').attr('title')+'</span>');
    });
    $('nav li span').each(function(){
        // var textwidth = ???? 
        // $('nav li span').css("left",-textwidth/2);
        // $('nav li span').css("width",textwidth);
    });
});

演示:
http://jsfiddle.net/vxUTZ/1/

2 个答案:

答案 0 :(得分:3)

$(this).width();

使用上面的代码,您将得到跨度的宽度,但在您必须更改css-part中跨度中的空白行为之前:

span { white-space: nowrap; }

这样,每个空格后都不会有换行符,计算出的宽度就是文字的宽度

答案 1 :(得分:0)

使用

$(this).width();

或者您也可以使用

$(this).attr("width");

在你的函数中。如果你想要缩短文本长度,那么

$(this).text().length;