使用jQuery将属性rel替换为类-同时更改值

使用jQuery将属性rel替换为类-同时更改值,jquery,Jquery,如何使用jQuery将属性rel替换为class,该值也应该更改。所以我只想删除href中的所有rel,并将其替换为class属性,但仅在某个div中,并且仅当它包含图像时 例如: <div class="box"> <a href="#" rel="lightbox123"> <img src="#"> </a> </div> 到 这应该可以 $(“.box a:has(img)”).attr(“类”

如何使用jQuery将属性
rel
替换为
class
,该值也应该更改。所以我只想删除
href
中的所有
rel
,并将其替换为
class
属性,但仅在某个
div
中,并且仅当它包含图像时

例如:

<div class="box">
   <a href="#" rel="lightbox123">
      <img src="#">
   </a>
</div>


这应该可以

$(“.box a:has(img)”).attr(“类”,函数(){
var val=$(this.attr(“rel”);
$(此).removeAttr(“rel”);
返回val;
});
console.log($(“.box”)[0].outerHTML)

您可以尝试我在评论中提到的内容,在页面中,您可以
检查元素
,并检查类是否添加为以
红色显示文本
颜色:


.lightbox{颜色:红色;}
$(文档).ready(函数(){
var getTagName=$(“.box a:has(img)”).parent();//返回DIV,因为$(“.box a:has(img)”)返回锚标记
//$(“.box a:first child”).removeAttr(“rel”);//这将从box类的第一个子类中删除rel属性,而不检查锚标记是否将child作为img,因此不好。
//$(“.box a:first child”).addClass(“lightbox”);//这将在不检查img标记的情况下将类添加到第一个子级,因此不推荐这样做
if(getTagName.prop(“标记名”)==“DIV”)//注意标记名返回的是大写
{
$(“.box a:has(img)”).removeAttr(“rel”).addClass(“lightbox”);//这将删除rel属性
}
});

$(“.box a:第一个孩子”)。removeAttr(“rel”)
将删除您的
rel
属性<代码>$(“.box a:第一个孩子”).addClass(“lightbox”)
将添加类。@OmSao我认为您应该将
$(“.box”)
替换为
$(“.box a img”).parent()
,以获得所需的结果。@EvilDevil:谢谢,伙计,刚才做了!!非常感谢邪恶恶魔和OmSao,效果非常好:-)@hippolas_cage:如果您对答案感到满意,请接受它并关闭问题。OP说,
我只想删除a href中的所有rel,并用class属性替换它
您正在删除rel,而不是将该值设置为class。您正在添加一个新类。
<div class="box">
   <a href="#" class="lightbox">
      <img src="#">
   </a>
</div>