クリックすると展開したり折りたたんだりする小さなスクリプトを作成しました(詳細/以下を参照)。私の問題は、「クリックして」ボタンがあり、クリックするとdivが動的に作成されることです。ただし、divがDOMに追加されると、高さが指定されているため、コンテナーは自動的に拡張されません。クリック時に高さを自動に設定すると、この問題は解決しますが、これを解決する他の可能な方法はありますか。
JSFiddle- http: //jsfiddle.net/7ntQR/
コード
(function($) {
$.fn.truncateText = function() {
this.each(function() {
var el = $(this);
var height = el.height(); //get the current height
el.data("dht",height); //use jquery data store to store the original height
el.css({ //set the height to some pixel...
'height':'40px'
});
var btnState = 'collapse';
var ix = $('<div>', {
'class':'seeMore'
}).appendTo($(el.parent()));
var sm = $('<span>').html('more')
.appendTo(ix)
.on('click' , function() {
if(btnState == 'collapse') {
btnState = 'expand';
el.animate({
'height':'40px'
},500);
}else {
btnState = 'collapse';
el.animate({
'height':el.data("dht")
},500);
}
});
btnState = 'expand';
function expand(elm) {
elm.html('SEE LESS');
}
function collapse(elm) {
elm.html('more');
}
});
};
})(jQuery);
最初にdivの元の高さはdata()を使用して保存され、その後divの高さは40pxに変更されます。