循环HTML变量并用内容替换跨度

时间:2016-11-11 10:56:27

标签: javascript jquery html replacewith

我有一个包含HTML的变量。

var html = '<p><span id="variable:7" class="variable-source" title="variable:TEXT_CONTAINER">DATA</span> This is a variable</p>'+
'<p><span id="input:10.New Input 2" class="input-source" title="New Screen; New Input 2">DATA</span> This is a input source</p>'+
'<p>Testing</p>';

我正在尝试循环所有元素并使用跨度特定日期替换。因此,任何具有variable-source类的跨度都需要替换为特定日期,而input-source则相同。

我试过使用以下内容:

$('span', html).replaceWith(function () {
    var id = $(this).attr('id');
    // this returns the correct id
    //calculations go here
    var value = 'testing';
    return value
});

其中输出以下内容:

testing This is a variable

所有段落标记都已删除,似乎在第一段后停止。这里有什么我想念的吗?如果需要,我可以发布更多代码或解释更多。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您需要创建一个html对象引用,否则您将无法获得对更新内容的引用。然后在执行替换操作

后从创建的jQuery对象获取更新内容

&#13;
&#13;
var html = '<p><span id="variable:7" class="variable-source" title="variable:TEXT_CONTAINER">DATA</span> This is a variable</p>' +
  '<p><span id="input:10.New Input 2" class="input-source" title="New Screen; New Input 2">DATA</span> This is a input source</p>' +
  '<p>Testing</p>';

var $html = $('<div></div>', {
  html: html
});

$html.find('span.variable-source').replaceWith(function() {
  var id = this.id;
  // this returns the correct id
  //calculations go here
  var value = 'replaced variable for: ' + id;
  return value
});
$html.find('span.input-source').replaceWith(function() {
  var id = this.id;
  // this returns the correct id
  //calculations go here
  var value = 'replaced input for: ' + id;
  return value
});

var result = $html.html();
$('#result').text(result);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="result"></div>
&#13;
&#13;
&#13;