字符串转换为jQuery对象,替换属性,然后再转换回字符串(请参见JS Fiddle)

3
这里有一个链接:http://jsfiddle.net/r4KL9/ 这段代码的作用是将所有类名替换为相应的data-change属性。
例如,如果我有以下代码:
<div class="hello" data-change="new-class">

...I would expect it to return

<div class="new-class" data-change="new-class">

我的代码可以改变其中一个(在按钮上的那个),但不能改变另一个。

我做错了什么?

感谢任何帮助。

--

显然,我也需要发布JS Fiddle的代码:

var str = '<div class="original-class" data-change="new-class">Hello</div><div class="class-123"><input type="button" class="start-class" data-change="any-new-class" value="Click Me"></div>';

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

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

alert( $(html).parent().html() );
2个回答

2
var html = $('<div/>').html(str).find('[data-change]').attr('class', function () {
    return $(this).data('change');
}).end().html();

alert(html);

http://jsfiddle.net/n8zMN/


太好了。如果我能点赞并且不用等待15秒就可以发表评论就好了。 - user2143356

1

try this:

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

编辑:

var html = $(str);
html.filter('[data-change]').attr('class', function() { return $(this).data('change') });

我认为它有效:http://jsfiddle.net/r4KL9/2/

谢谢,我最终尝试了另一个答案,它起作用了,但我认为你的答案也不错。 - user2143356

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接