在jQuery中替换HTML字符串中的属性

时间:2013-03-07 08:43:42

标签: javascript jquery

我有一个包含HTML的字符串。我想用data-class属性中的值替换class属性(如果有的话)。这应仅适用于HTML的特定标记/部分。

我已经写了一些,但是会很感激指针完成它:

html = "<div class='hello' data-class='class-name'>Content</div><div class='123'>Content</div><div data-class="class-111"></div>";

var html_out = $('<div/>').html(html).contents();

var final_html = $(html_out).find('[data-class]').attr('class', 'new-value');

所以上面应该返回:

<div class='class-name' data-class='class-name'>Content</div><div class='123'>Content</div><div class="class-111" data-class="class-111"></div>

至于它是维护数据类部分还是删除它,这无关紧要。

关键是HTML字符串将包含data-class属性的使用,我需要使用此值覆盖class属性。

2 个答案:

答案 0 :(得分:4)

尝试

$('div[data-class]').attr('class', function() { return $(this).data('class') });

答案 1 :(得分:2)

好的,我认为这就是你要找的东西 -

html_out.find('[data-class]').each(function() {
    this.attr('class', this.attr('data-class');
})

查看jquery docs on attribute selectorsattr function