2

我有一个 html 字符串,我想用标签替换我的所有img标签figure。这是我的代码

$('img',$(html)).replaceWith(function(){
    var figure = '<figure><img src="'+$(this).src+'"><figcaption>'+$(this).attr('alt')+'</figcaption></figure>';
    return $(figure);
});

此代码不起作用。我还想在执行操作后返回生成的 html 字符串,但似乎 replace 只返回已替换的元素。那么我该怎么做呢?

4

1 回答 1

6

$(this).src不是有效的代码。你需要$(this).attr('src')或只是this.src在这种情况下。

但是,真正的问题可能是您希望html就地进行更改-除非您没有使用replaceWithon html,而是使用 on $(html)。换句话说,您的 HTML 字符串没有被更改;您的临时 jQuery 对象是,然后消失。

尝试这样的事情:

var html = /* whatever you want */;
var $html = $(html); // jQuery object

$('img', $html).replaceWith(function () {
    return '<figure><img src="' + $(this).attr('src') + '"><figcaption>' + $(this).attr('alt') + '</figcaption></figure>';
});

html = $html.html(); // update html string, if necessary

http://jsfiddle.net/mblase75/77aXS/

于 2013-05-31T14:58:34.707 回答