在jquery中删除围绕所选图像的锚标记

时间:2012-09-25 10:19:07

标签: jquery

我有一段代码,当页面加载时,检查一系列图像并查看他们的id是否包含单词video。

如果是,我希望能够删除图像周围的锚标记。但是,我目前正在这样做的方式(通过.remove())删除了我正在移除的锚标记内的图像。

有没有办法只删除锚标签? 注意:图像列表将根据访问它们的用户被拉入,因此不会是可以附加的预定义代码。

CODE:

$(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');
        }
    });
});

3 个答案:

答案 0 :(得分: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');
        }
    });
});

答案 1 :(得分: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');
        }
    });
});

所以我用图片标签替换锚标签,而不是删除锚

答案 2 :(得分:0)

删除元素时,也会删除其所有子元素。因此,您需要先克隆并附加图像。考虑使用clone函数,尤其是当您需要维护事件处理程序时。

尝试:

$(this).closest('li').append($(this).clone());
删除$ parent之前