0

画像自体をクリックして画像の名前を編集できる画像ブラウザを作成しています。次に、画像名を変更できるフォームとともに、その下部にtrが表示されます。スライドアニメーションを除いて、すべて正常に動作します。

まず、editRowがすでに表示されているかどうかを確認します。そうである場合は、最初にslideUpが実行され、次にWebサイトから削除されます。その後、クリックした画像に新しいeditRowを追加します。スライドダウンアニメーションが必要でした。これを正しく機能させるにはどうすればよいですか?これで、スライドアップは正常に機能します。上にスライドして、editRowdivを削除します。その後、何も起こりません。

また、divは最初にのみ表示されます。

$('.imgItem').click(function() {
        imgID = $(this).parent().find('div').attr('id').replace(/image/, '');;
        if($('.editRow').length){
            $('.editRow').slideUp(300, function(){
                $('.editRow').remove();
                $(this).parent().parent().parent().after('<tr class="editRow"><td class="editItem" colspan="4"></td></tr>');
                $('.editRow').hide();
                $('.editItem').load("ajax.editImage.php",{imgID:imgID});
                $('.editRow').slideDown().show();
            });         
        }else{
            $(this).parent().parent().parent().after('<tr class="editRow"><td class="editItem" colspan="4"></td></tr>');
            $('.editRow').hide();
            $('.editItem').load("ajax.editImage.php",{imgID:imgID});
            $('.editRow').slideDown().show();
        }
    });
4

1 に答える 1

1

これは、クラス editRow を持つすべての要素を削除しているためです。私はあなたが必要だと思います:

$('.editRow').slideUp(300, function(){
            ...
            $(this).remove();

DOM から削除されたため、それ以外の場合$(this).parent()は何も参照しないため、最後に削除します。this

于 2012-10-29T12:55:32.957 に答える