javascript - 在每个之前添加元素
问问题
72 次
3 回答
6
使用 jQuery,您可以使用它wrap()
来执行此操作:
$('img').each(function() {
$(this).wrap($('<a/>', {href: this.src}));
});
于 2013-05-30T16:03:41.023 回答
3
你想要的是包装和构建正确的href,你可以使用正则表达式:
$('img').wrap(function(){
return $('<a>').attr(
'href',
'../tmp.php?title=' + this.src.match(/\/(.*?)\.jpg$/)[1] + '.mp4'
)
});
于 2013-05-30T16:05:55.860 回答
2
除了你明显缺乏对querySelector
函数的理解之外,你还期望</img>
工作(它没有,它是一个 void 元素)......
以下是你应该如何去做,并附有评论来解释:
var imgs, l, i, img, par, a; // prepare some variables
imgs = document.getElementByTagName('img');
// get all images on the page
l = imgs.length; // save the number of images (for performance reasons)
for( i=0; i<l; i++) { // loop through all images
img = imgs[i]; // for easire access
par = img.parentNode; // get the parent of the current image
a = document.createElement('a');
// create a new link
a.href = "../tmp.php?title="+img.src.match(/([^\/.]+\.\w+$/)[1]+".mp4";
// extract the right part from the image source
// and put it into the link's href
par.insertBefore(a,img); // insert the link before the image
a.appendChild(img); // move the image so that it is inside the link
}
于 2013-05-30T16:08:55.380 回答