0

我找不到与我的场景相匹配的问题,并且由于某种原因无法解决这个问题...... jQuery 没问题,但首选原生(或 angularJS / jQuery Lite)。

我有几个自定义标签的 html。我想保留一些标签(它们是空的),但只保留所有其他标签的文本。我没有直接操作 DOM - 我放入了一个 HTML,并且需要取出 HTML。例如:

<span class="ng-scope">CTAGCTCTCTGGAGATTAACGAGGAGAAATACTAGAtTGGTTCAT</span><start feat="1" class="ng-scope"></start><annotation index="1" class="ng-isolate-scope ng-scope" style="background-color: rgb(238, 153, 238); background-position: initial initial; background-repeat: initial initial;"><span tooltip="Another Promoter" tooltip-placement="mouse" tooltip-append-to-body="true" ng-transclude="" class="ng-scope"><span class="ng-scope">GATCATAAgcttgaat</span></span></annotation><end feat="1" class="ng-scope"></end><span class="ng-scope">tagccaaacttatt</span>

CTAGCTCTCTGGAGATTAACGAGGAGAAATACTAGAtTGGTTCAT <start feat="1"></start> GATCATAAgcttgaat <end feat="1"></end> tagccaaacttatt

空白不重要。最终我也会拉出开始和结束,所以它们的形式不是太重要(例如可能是 <1> xx )

谢谢

4

2 回答 2

0

这可以在没有 dom 的情况下完成您需要的标签工作:

var str = IN.value;
var str2= str.replace(/\s*<(\/?)(\w+)([^>]*?)>\s*/g,  function(j,b,a,c){
  return   ({start:1, end:1}[a]) ?   ("<"+b+a+c+">")  : "";
});

var end='CTAGCTCTCTGGAGATTAACGAGGAGAAATACTAGAtTGGTTCAT<start feat="1" class="ng-scope"></start>GATCATAAgcttgaat<end feat="1" class="ng-scope"></end>tagccaaacttatt';

str2==end // true

我想你并不真的想要/不需要删除类属性,因为你没有提到它。如果你这样做,那么它会变得更加复杂,但可能是可行的......

于 2013-07-03T23:13:03.300 回答
0

HTML 应该被解析为 HTML,一旦你操作了 DOM 元素,删除了你想要的等,你可以将它提取为一个字符串,如下所示:

var html = 'your HTML string here';

var markup = $.map($('<div />', {html:html}).children(), function(el) {
    return /(start|end)/.test(el.tagName.toLowerCase()) ? el.outerHTML : $(el).text();
}).join('');

小提琴

于 2013-07-03T23:52:44.540 回答