我有一段代码,当页面加载时,检查一系列图像并查看他们的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');
}
});
});
答案 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之前。