Javascript 使用jQuery替换HTML的特定部分

Javascript 使用jQuery替换HTML的特定部分,javascript,jquery,html,Javascript,Jquery,Html,我试图找到HTML代码的特定部分,并使用jQuery将其替换为另一部分。我已经用JSFIDLE尽可能简单地复制了这个问题: 在本例中,我尝试在鼠标退出DOM时将字体从斜体改为粗体。我正在使用替换,但它不起作用。我不知道该换什么 $(this).html().replace('<em>', '<strong>').replace('</em>', '</strong>'); $(this.html().replace(“”,).replace(“

我试图找到HTML代码的特定部分,并使用jQuery将其替换为另一部分。我已经用JSFIDLE尽可能简单地复制了这个问题:

在本例中,我尝试在鼠标退出DOM时将字体从斜体改为粗体。我正在使用
替换
,但它不起作用。我不知道该换什么

$(this).html().replace('<em>', '<strong>').replace('</em>', '</strong>');
$(this.html().replace(“”,).replace(“”,);

您正在获取并替换html,但最后没有对其进行任何操作。试试这个:

$(this).html(
    $(this).html().replace('<em>', '<strong>').replace('</em>', '</strong>')
);
$(this).html(
$(this.html().replace(“”,')。replace(“”,'))
);

但就我个人而言,我会采用以下方法:

$(this).find('em').each(function() {
    $(this).replaceWith($('<strong />').html($(this).html()));
});
$(this.find('em')。每个(函数(){
$(this.replacetwith($('').html($(this.html()));
});

您正在获取并替换html,但在最后没有对其进行任何操作。试试这个:

$(this).html(
    $(this).html().replace('<em>', '<strong>').replace('</em>', '</strong>')
);
$(this).html(
$(this.html().replace(“”,')。replace(“”,'))
);

但就我个人而言,我会采用以下方法:

$(this).find('em').each(function() {
    $(this).replaceWith($('<strong />').html($(this).html()));
});
$(this.find('em')。每个(函数(){
$(this.replacetwith($('').html($(this.html()));
});
.html()方法和后续的.replace()方法返回字符串。如果要用字符串替换html,则需要用更新的字符串设置$(this).html()

var updatedHtml = $(this).html().replace('<em>', '<strong>').replace('</em>', '</strong>');
$(this).html(updatedHtml);
var updatedHtml=$(this.html().replace(“”,).replace(“”,);
$(this).html(updatedHtml);
.html()方法和后续的.replace()方法返回字符串。如果要用字符串替换html,则需要用更新的字符串设置$(this).html()

var updatedHtml = $(this).html().replace('<em>', '<strong>').replace('</em>', '</strong>');
$(this).html(updatedHtml);
var updatedHtml=$(this.html().replace(“”,).replace(“”,);
$(this).html(updatedHtml);

replace
不是就地方法,即使如此,也不意味着将调用.html(content)。如果replace是一个inplace调用,那么返回的字符串将被更改,而不是真正的内部原始html

假设您在一个步骤中完成了此操作:

var str_ = $(this).html();
str_.replace(...).replace(...);
如您所见,html内容不会被修改

Bit更糟糕的是,由于
replace
方法不存在,因此
str_u
str_u.replace(…).replace(…)
将具有不同的对象

你必须把衣服包起来

$(this).html().replace('<em>', '<strong>').replace('</em>', '</strong>');
$(this.html().replace(“”,).replace(“”,);
在$(this.html(…)调用中:

$(this.html($(this.html().replace(“”,).replace(“”,);

replace
不是就地方法,即使如此,也不意味着将调用.html(content)。如果replace是一个inplace调用,那么返回的字符串将被更改,而不是真正的内部原始html

假设您在一个步骤中完成了此操作:

var str_ = $(this).html();
str_.replace(...).replace(...);
如您所见,html内容不会被修改

Bit更糟糕的是,由于
replace
方法不存在,因此
str_u
str_u.replace(…).replace(…)
将具有不同的对象

你必须把衣服包起来

$(this).html().replace('<em>', '<strong>').replace('</em>', '</strong>');
$(this.html().replace(“”,).replace(“”,);
在$(this.html(…)调用中:

$(this.html($(this.html().replace(“”,).replace(“”,);

或者,您可以使用此方法替换标记:

$(this).find('em').each(function() { 
  $(this).replaceWith($('<strong>' + this.innerHTML + '</strong>'));
});
$(this).find('em').each(function(){
$(this.replace为($(“”+this.innerHTML+”);
});

或者,您可以使用此方法替换标记:

$(this).find('em').each(function() { 
  $(this).replaceWith($('<strong>' + this.innerHTML + '</strong>'));
});
$(this).find('em').each(function(){
$(this.replace为($(“”+this.innerHTML+”);
});
根据(不完全相同的方法,但无论如何可能会产生类似的结果)您的方法可能更快,因此最好坚持使用它。根据(不完全相同的方法,但无论如何可能会产生类似的结果)您的方法可能更快,因此最好坚持使用它。