我有一個水平線的div元素是display:inline-block
和頂部對齊。使用jQuery的問題刪除()內嵌塊的元素
我可以添加元素,並擴展行。當我通過將寬度設置爲0來移除元素時,該行不保留單行顯示,而是強制第二行在動畫期間臨時出現。
在IE,Webkit和Firefox中的行爲是一樣的。
我可以改變界面來避免這個問題,但我仍然想知道是什麼原因造成的,以及如何解決它。
下面是該問題的縮減示例。
body {
text-align: center;
}
#container {
height: 20px;
border: 1px dashed #AAA;
background: #EEE;
margin: 0 auto;
display:table !important;
display: -moz-inline-stack; /* Pre FF3 fix */
display: inline-block;
zoom: 1; /* IE fix */
*display: inline; /* IE fix */
}
.item {
cursor: pointer;
width: 50px;
height: 18px;
border: 1px solid purple;
vertical-align: top;
display: inline-block;
color: white;
vertical-align: top;
display: -moz-inline-stack; /* Pre FF3 fix */
display: inline-block;
zoom: 1; /* IE fix */
*display: inline; /* IE fix */
}
.outer {
background: orange;
}
$('#add').click(function() {
$(this).before('<div class="item"></div>')
});
$('#add').click().click().click()
$('.item:not(.outer)').live('click', function() {
$(this).animate({width: 1, paddingLeft: 0}, 1000, function() {$(this).remove()});
});
<div id="container"><div class='item outer'></div><div id="add" class="item outer">Add</div></div>
是的!感謝您的解決方案。在此頁面上有類似的解決方案http://forum.jquery.com/topic/animate-does-not-play-well-with-css-display-box-and-inline-block-as-well,但我更喜歡你的,因爲它緩存測試結果。順便說一下,我希望這個問題在jQuery中得到解決,以便我們不必部署被黑客入侵的版本。:) – harpo 2010-05-19 20:09:29
@harpo - 不客氣。值得投票呢? ; o)我沒有理解它,但是你可以把修改過的方法放在一個單獨的文件中,這樣jQuery就被覆蓋了。然後你仍然可以使用jQuery的CDN版本。 – user113716 2010-05-19 20:14:33
是的,謝謝。你也回答了我的下一個問題,關於分離使用CDN的mod。我現在正在嘗試。 – harpo 2010-05-19 21:03:44