2

jQuery Uiを使用して、ドラッグしてサイズを変更するグリッドを作成していますが、エレメントのコンテンツ、テキスト、画像のタイプが異なります。要素の高さを変更するとコンテンツの高さでは更新されません。例えば新しい画像の高さを再計算しない。サイズ変更時にラップコンテンツdivを更新するには?

HTML

<div class="column"> 
    <div class="portlet"> 
     <div class="portlet-header">Feeds</div> 
     <div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div> 
    </div> 
    <div class="portlet"> 
     <div class="portlet-header">News</div> 
     <div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div> 
    </div> 
</div> 
<div class="column"> 
    <div class="portlet"> 
     <div class="portlet-header">Shopping</div> 
     <div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div> 
    </div> 
</div> 
<div class="column"> 
    <div class="portlet"> 
     <div class="portlet-header">Links</div> 
     <div class="portlet-content"><img src="https://s-media-cache-ak0.pinimg.com/736x/12/64/da/1264da4a3f18207dc22592102abae40d--frangipani-tattoo-plumeria-flowers.jpg"></div> 
    </div> 
</div> 

JS

$(function() { 
    $(".column").sortable({ 
     connectWith: ".column", 
     placeholder: 'ui-state-highlight', 
     forcePlaceholderSize: true 
    }); 

    $(".portlet").resize(function() { 
     var myHeight = $(".portlet-content").scrollHeight; 
     $(".portlet").outerHeight(myHeight);  
    }); 

    $(".portlet").resizable().addClass("ui-widget ui-widget-content ui-helper-clearfix ui-corner-all") 
     .find(".portlet-header") 
     .addClass("ui-widget-header ui-corner-all") 
     .prepend("<span class='ui-icon ui-icon-minusthick'></span>") 
     .end() 
     .find(".portlet-content"); 
    $(".portlet-header .ui-icon").click(function() { 
     $(this).toggleClass("ui-icon-minusthick").toggleClass("ui-icon-plusthick"); 
     $(this).parents(".portlet:first").find(".portlet-content").toggle(); 
    }); 
    $(".column").disableSelection(); 
}); 

JsFiddle here画像でボックスのサイズを変更してみてください、あなたはそれがOKのように見える

答えて

1

そのラッパーの高さを更新していませんが表示されます私はそれを解決しました:

$(".portlet").resize(function() { 
    $(".portlet").css("height", "auto"); 
}); 

とCSSで提供:

.portlet-content { 
    padding: 5px; 
    height: 100%; 
    float: left; 
} 

の作業jsFiddle

ないことが最善の方法ですが、うまく動作しているようです

+0

を動作するかどうか確認してください。テキストをラップしない行を修正するために、クラス '.portlet'に' overflow:hidden; 'を追加することもできます。 – ivo

関連する問題