我有以下HTML内容,我想更新从XYZ到ABC的所有范围的HTML。
var HTML = '<div>Testing</div><span>XYZ<a href="#">Link Data</a></span><div>This is content</div><span>XYZ</span>';
我已尝试过以下代码,但似乎是主要的HTML内容正在更新或替换效果很好,但主要内容没有更新,
$.each($(HTML).find("> span"), function(index) {
this.innerHTML = this.innerHTML.replace('XYZ', ''ABC'');
});
任何输入?
答案 0 :(得分:2)
根据当前JS代码中的逻辑判断,您只想影响其文本中XYZ
值的html()
元素,而不是所有元素。
为此,您可以为var html = '<div>Testing</div><span>XYZ<a href="#">Link Data</a></span><div>This is content</div><span>XYZ</span>';
$(html).filter('span').html(function(i, h) {
return h.replace('XYZ', 'ABC');
}).end().appendTo('div');
提供一个功能,您可以使用该功能更新当前值。试试这个:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div></div>
&#13;
var html = '<div>Testing</div><span>XYZ<a href="#">Link Data</a></span><div>This is content</div><span>XYZ</span>';
html = $('<div>' + html + '</div>').find('span').html(function(i, h) {
return h.replace('XYZ', 'ABC');
}).end().html();
console.log(html);
&#13;
如果你只想修改字符串值,那么你可以修改上面的内容中的元素,然后从中返回内容,如下所示:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div></div>
&#13;
Map<ScheduleAbsenceHeaderHistoryTypeEnum, ValueObject>
....
public enum ScheduleAbsenceHeaderHistoryTypeEnum {
ADDITIONAL_HOURS("ADDITIONAL_HOURS"),
HOLIDAY("HOLIDAY"),
REMAINING_HOLIDAY_HOURS("REMAINING_HOLIDAY_HOURS"),
REMAINING_HOLIDAY_DAYS("REMAINING_HOLIDAY_DAYS"),
TRANSFER_HOLIDAY("TRANSFER_HOLIDAY"),
INCREMENT_HOLIDAY("INCREMENT_HOLIDAY"),
..
&#13;
答案 1 :(得分:1)
根据我的理解,您想要替换其内容为XYZ
的所有跨度的文本,以便您可以写:
$('span').each(function() {
if ($(this).text() === "XYZ") {
$(this).text("ABC");
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<div>Testing</div>
<span>XYZ</span>
<div>This is content</div>
<span>XYZ</span>
<p><span>XZZ</span></p>
</body>
&#13;
修改强>
如果您的HTML位于变量中,您可以创建一个新的HTML元素并将HTML放在其上并使用相同的代码。
如果跨度也包含HTML代码,请使用string.prototype.replace()
方法来完成这一操作,这里有更新的小提琴:
var htmlCode = '<div>Testing</div><span>XYZ</span><div>This is content</div><span>XYZ</span><p><span>XZZ</span></p>';
var div = $('<div></div>');
div.html(htmlCode);
div.find('span').each(function() {
if ($(this).text().match("XYZ") != null) {
$(this).text($(this).text().replace(/XYZ/, "ABC"));
}
});
console.log(div.html());
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 2 :(得分:0)
更新了答案 。使用jquery的Contains()
函数,它会在span中找到XYZ
文本并替换为ABC
并保持儿童数据不变
var HTML = '<div>Testing</div><span>XYZ<a href="#">Link Data</a></span><div> This is content </div><span> XYZ </span>';
$('body').append(HTML);
$('span:Contains("XYZ")').each(function(){
var a = $(this).children().html() ? $(this).children().html() :"";
$(this).html('ABC'+a);
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 3 :(得分:0)
请尝试此
<script>
$.each($('html').find("> span"), function(index) {
if($(this).text() == "XYZ")
$(this).html('ABC');
});
</script>
答案 4 :(得分:0)
以下代码会将跨度文本从“XYZ”替换为“ABC”
var html = '<div>Testing</div><span>XYZ</span><div>This is content</div><span>XYZ</span>';
var htmlObj = $(html);
htmlObj.filter('span').each(function() {
if($(this).text() == "XYZ") {
$(this).text("ABC")
}
});
var htmlString = $('<div>').append(htmlObj).html();
console.log(htmlString);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 5 :(得分:0)
var compare = "XYZ";
$("span").filter(function() {
return $(this).text() == compare;
}).text("ABC")
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>Testing</div>
<span>XYZ</span>
<div>This is content</div>
<span>XYZ</span>
您可以使用.filter()
描述:将匹配元素集合减少到与选择器匹配的元素或通过函数测试。
答案 6 :(得分:0)
例如,此代码段对我有用:
$.each($('span'), function () {
this.innerHTML = this.innerHTML.replace('XYZ', 'ABC')
})
这是您正在寻找的,或者您可能需要在文档加载时调用IIFE以在页面可用后替换页面中的内容。