jquery更改标记

我有这个代码不起作用,你能帮帮我吗? 我希望我将class =“s7”的标签名称“p”更改为“h1”

  $(document).ready(function(){ $(".s7").replaceWith($('

' + $(this).html() + '

'); });

问题是你将所有元素与类s7匹配,但是你需要逐个处理它们,以便将它们的内容复制到新元素中。 在您当前的代码中, this始终是document ,而不是当前元素。

您可以使用each()迭代匹配的元素:

 $(".s7").each(function() { var $this = $(this); $this.replaceWith($("

" + $this.html() + "

")); });

或者可能:

 $(".s7").each(function() { $("

" + $(this).html() + "

").replaceAll(this); });

你错过了一个右括号,你在错误的上下文中使用

 $(document).ready(function(){ $(".s7").replaceWith($('

' + $(".s7").html() + '

')); });

http://jsfiddle.net/L82PW/

如果您有多个类名为s7元素,请使用.each()

 $(document).ready(function(){ $(".s7").each(function(){ $(this).replaceWith($('

' + $(this).html() + '

')); }); });

“replaceWith()”调用中this的值不是“s7”元素; 这将是更大的“document.ready”处理程序中的任何内容。

要做你想做的事,请使用“.each()”:

  $('.s7').each(function() { $(this).replaceWith($('

' + $(this).html() + '

')); });

在该版本中,jQuery将使用类“s7”为每个元素调用“each”函数。 此外,在该函数调用中,jQuery安排在每次迭代时引用其中一个DOM元素。

为了进一步阐述差异,请考虑在我的版本和你的版本中,“replaceWith()”的参数是调用“.replaceWith()” 之前计算的。 也就是说,在函数调用之前计算涉及$(this)的字符串连接表达式。 因此,没有办法承担链中任何元素的价值; JavaScript根本不起作用。

但是,使用“.each()”循环,我们可以确保它具有有用的值。 请注意“.each()” 还将对当前DOM元素的引用作为显式参数传递,因此代码也可能如下所示:

  $('.s').each(function(index, element) { $(element).replaceWith($('

' + $(element).html() + '

')); });