使用包装,但如果具有父级并且是,则改为包裹锚点

当wordpress将一个图像添加到post时,它将其包装在一个锚标记中。 像这样:

 

我想用div包装锚点并在图像后添加叠加跨度。 像这样:

  

以下代码就是这样做的。

 $('#post a').has('img').wrap('
').find('img').after('
');

但是,当您将链接图像添加到wordpresspost时,它不会将图像包装在锚标记中,因此不起作用。 如果没有锚标记,则应该换行图像标记。 像这样:

 

当然可以定位img标签,但如果是这样,img标签具有锚父级的实例,锚不会被div包装。 知道怎么包装锚如果它里面有一个img,如果它没有它应该只包装img标签?

提前致谢。

这很丑,但它应该作为你的第二个选择器:

 $('img:not(a img)'); 

像这样的东西应该工作:

 ​$('#post img')​.each(function() { if ($(this).parent().is('a')) { $(this).parent('a') .wrap('
'); }else{ $(this).wrap('
'); } $(this).after('
'); }​);​

迭代所有图像,并包含父元素(如果有),否则它包装图像元素,并在两个实例中的标记之后添加叠加。

或者如果您希望将其包装在一个语句中:

 $('#post img').map(function() { return $(this).parent('a').length?$(this).parent('a'):$(this); }).wrap('
').end() .after('
')