我正在尝试计算div的宽度与页面中同一div类出现多次的文本之间的宽度和差异。
HTML:
<div class="post_content">
<div class="container">
<div class="title-holder">
<h2><a href="link.html" class="widget-title">Crossword Book</a></h2>
</div>
</div>
<div class="container">
<div class="title-holder">
<h2><a href="link.html" class="widget-title">Crossword Bookstore Ltd. – Elgin Road</a></h2>
</div>
</div>
</div>
CSS:
div.container{
width: 130px;
}
div.title-holder {
width: 130px;
height:20px;
text-align:center;
background: silver;
overflow:hidden;
position: relative;
}
div.title-holder a {
position: relative;
white-space:nowrap;
left: 0px;
}
div.image{
background: brown;
width: 100%;
height: 100px;
}
以下脚本正确输出第一个div的结果,然后重复相同的结果。它不会进入下一个div并给出下一个结果。
$("div.title-holder").each(function(){
var m = $(this).width();
var n = $("div.title-holder h2 a.widget-title").width();
var o = m - n;
alert ("title: " + m + " text: " + n + " diff: " + o);
});
输出
First Alert: title: 130 text: 108 diff: 22
Second Alert: title: 130 text: 108 diff: 22
我希望实现的是
First Alert: title: 130 text: 108 diff: 22
Second Alert: title: 130 text: 258 diff: -128
答案 0 :(得分:7)
值:
var n = $("div.title-holder h2 a.widget-title").width();
将始终相同(该选择器查询的第一个结果)。你需要这样做:
var n = $(this).find("a.widget-title").width();
或更具体:
var n = $("div.title-holder").children("h2").children("a.widget-title").width();
答案 1 :(得分:2)
像这样使用:
var n = $(this).find("h2 a.widget-title").width();
答案 2 :(得分:0)
$("div.title-holder").each(function(){
var m = $(this).width();
var n = $("h2 a.widget-title", this).width();
var o = m - n;
alert("title: " + m + " text: " + n + " diff: " + o);
});