jQuery 动画 table 单元格宽度百分比
jQuery animate table cell width percentage
我有一个有 2 列的 table,当我将宽度设置为 66% 时它工作正常,但是当我再次设置它时(从 66% 到 66%)它变大并返回到66%.
预期的结果是保持在66%,因为已经是66%了。
在下面的示例中,您可以看到每次单击 table 时 table 如何更改它的大小。
$(document).ready(function(){
$('table').click(function(){
$('.first').animate({'width':'66%'},400);
});
});
table{
width: 400px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td class="first">click</td>
<td class="secon">me</td>
</tr>
</table>
为什么会这样?
如何解决?
检查当前宽度,仅在宽度不是 66% 时设置动画
$(document).ready(function(){
$('table').click(function(){
if($('.first')[0].style.width != '66%'){
$('.first').animate({'width':'66%'},400);
}
});
});
table{
width: 400px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td class="first">click</td>
<td class="secon">me</td>
</tr>
</table>
这个解决方案怎么样 -
$(document).ready(function(){
$('table').click(function(){
var tableWidth = $(this).width();
$('.first').animate({'width': (tableWidth * 66 / 100) + 'px'}, 400);
});
});
我有一个有 2 列的 table,当我将宽度设置为 66% 时它工作正常,但是当我再次设置它时(从 66% 到 66%)它变大并返回到66%.
预期的结果是保持在66%,因为已经是66%了。
在下面的示例中,您可以看到每次单击 table 时 table 如何更改它的大小。
$(document).ready(function(){
$('table').click(function(){
$('.first').animate({'width':'66%'},400);
});
});
table{
width: 400px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td class="first">click</td>
<td class="secon">me</td>
</tr>
</table>
为什么会这样?
如何解决?
检查当前宽度,仅在宽度不是 66% 时设置动画
$(document).ready(function(){
$('table').click(function(){
if($('.first')[0].style.width != '66%'){
$('.first').animate({'width':'66%'},400);
}
});
});
table{
width: 400px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td class="first">click</td>
<td class="secon">me</td>
</tr>
</table>
这个解决方案怎么样 -
$(document).ready(function(){
$('table').click(function(){
var tableWidth = $(this).width();
$('.first').animate({'width': (tableWidth * 66 / 100) + 'px'}, 400);
});
});