0

ページが読み込まれると、一連の画像をチェックして、そのIDにvideoという単語が含まれているかどうかを確認するコードがあります。

もしそうなら、画像を囲むアンカータグを削除できるようにしたいと思います。ただし、現在これを行っている方法(.remove()を使用)では、削除するアンカータグ内にあるため、画像が削除されます。

アンカータグを削除する方法はありますか?注:画像のリストは、それらにアクセスするユーザーに基づいて取得されるため、に追加できる事前に決定されたコードにはなりません。

コード:

$(document).ready(function() {
    $('ul.thumbnails li a img').each(function() {
        if($(this).attr('id').indexOf('video') != -1){
            var $parent = $(this).closest('a');
            $parent.remove();
        } else {
            $(this).addClass('photo');
        }
    });
});
4

3 に答える 3

2

jQuery unwrapを使用してみてください:

$(document).ready(function() {
    $('ul.thumbnails li a img').each(function() {
        if($(this).attr('id').indexOf('video') != -1){
            $(this).unwrap();
        } else {
            $(this).addClass('photo');
        }
    });
});
于 2012-09-25T10:23:02.863 に答える
0

要素を削除すると、そのすべての子も削除されます。したがって、最初にイメージのクローンを作成して追加する必要があります。特にイベントハンドラーを維持する必要がある場合は、クローン関数の使用を検討してください。

試す:

$(this).closest('li').append($(this).clone());

$parentを削除する前に。

于 2012-09-25T10:32:02.917 に答える
0

問題は、アンカータグに画像が含まれているため、アンカーを削除すると、その中の画像も削除されることです。これを試して:

$(document).ready(function() {
    $('ul.thumbnails li a img').each(function() {
        if($(this).attr('id').indexOf('video') != -1){
            var $parent = $(this).closest('a');
            $parent.replaceWith($(this).html());
        } else {
            $(this).addClass('photo');
        }
    });
});

だから私はアンカーを削除するのではなく、アンカータグを画像タグに置き換えています

于 2012-09-25T10:23:45.283 に答える