とりわけ、ユーザーがテーブル内のレコードをリアルタイムで削除できるカスタムjQueryプラグインを構築しています。レコードが削除されたら、削除されたテーブル行の背景色を赤にして、上にスライドさせて非表示にします。
以下のコードスニペットは、色を変更するアニメーションを実行せず、行を上にスライドしません。ただし、スライドアップアニメーションになるはずのものが終了すると、行は削除されます。以下のコードを確認するときに知っておくべきこと:
object.parent().parent().addClass('deleteHighlight', 1000, function() {
//Fold the table row
$(this).slideUp(1000, function() {
//Delete the old row
$(this).remove();
});
});
これが実行されているHTMLは次のとおりです。特別なものはありません。
<table class="dataTable">
<thead>
<tr>
<th> </th>
<th>Title</th>
<th>Content Snapshot</th>
<th>Management</th>
</tr>
</thead>
<tbody>
<tr class="odd" id="11" name="1">
<td class="center width50"><a class="dragger"></a><a class="visibilityTrigger eyeShow"></a></td>
<td class="center width150">Title</td>
<td>
<div class="clipContainer">Content</div>
<div class="hide contentContainer">Content</div>
<div class="hide URLContainer">my-url</div>
</td>
<td class="center width75"><a class="edit"></a><a class="delete"></a></td>
</tr>
</tbody>
</table>
誰かがこれを修正する方法の例を教えていただけませんか?
お時間をいただきありがとうございます。
これは一部ブラウザの問題だと思います。あなたは本当にターゲットにするべきではありません<tr />
は、ブラウザの解釈が異なるためです。さらに、それらはブロック要素とは異なる動作をします。
この例では: http://jsfiddle.net/lnrb0b/3t3Na/1/ コードはChromeで部分的に機能します。 <tr />
はスタイリングを許可されています(一部のIEバージョンとは異なります))が、アニメーション化することはできません。作成した場合display:block
心配する必要はありませんが、テーブルとしてはごみです:)
この例では、 http://jsfiddle.net/lnrb0b/3t3Na/2/ アニメーション<td />
'sですが、ほとんど機能せず、辛抱強くゆっくりと動作します。
それらのテストをして、その間私は解決策を考えてみます。
スライドと削除を処理する最もエレガントな方法は、各td
の内部コンテンツをdiv
でラップし、td
のパディングと高さを同時に減らすことです。 div
s。この簡単なデモをチェックしてください: http://jsfiddle.net/stamminator/z2fwdLdu/1/
addClass
はすぐに実行されるため、コールバック関数を受け入れません。もっとこのようなものが欲しくなるかもしれません。
object.parent().parent().addClass('deleteHighlight').slideUp(1000, function() {
$(this).remove();
});
できますよ!
スライドさせたいtrの各tdをdivにラップし、次にそれらのdivをスライドさせます!
もちろん、各tdのパディング(上部と下部)をアニメーション化する必要があります。
ここに完全な例があります:
http://jsfiddle.net/3t3Na/474/
私のソースコードの抜粋:
$('a').click(function(){
var object = $(this);
object.parent().parent().addClass('deleteHighlight', 1000, function() {
$(this).find('td').each(function(index, element) {
// Wrap each td inside the selected tr in a temporary div
$(this).wrapInner('<div class="td_wrapper"></div>');
// Fold the table row
$(this).parent().find('.td_wrapper').each(function(index, element) {
// SlideUp the wrapper div
$(this).slideUp();
// Remove padding from each td inside the selected tr
$(this).parent().parent().find('td').each(function(index, element) {
$(this).animate({
'padding-top': '0px',
'padding-bottom': '0px'
}, function() {
object.parentsUntil('tr').parent().remove();
});
});
});
何らかの理由で、divを使用したwrapInner()が機能しなかったため、行のフォントサイズをアニメーション化して非表示にし、フォントサイズを通常の状態に戻すという、あまり洗練されていないソリューションを作成しました行は非表示です。
this.trs
.animate({ 'fontSize': '1px' }, 70)
.slideUp(1)
.animate({ 'fontSize': '12px'}, 10)
;
これを使用して、fullcalendar.js + scheduler.jsカレンダービューでリソースグループの折りたたみ/展開をアニメーション化します。