0

我需要从 HTML 包含中清除 span 元素,按照这个示例进行。然而,它只返回包含中的第一个纯文本字符串并删除其他所有内容(包含有十几个我想保留的 href 链接)。

  $scope.footermenu = function () {
      $http.get('includes/mainmenu.html').success(function(data) {
        var menusrc = data;
        $(menusrc).find('span').remove();
        var nospans = $(menusrc).html();
        return nospans;
      });
    };  
});
4

1 回答 1

0

在尝试谷歌能找到的每一个技巧后,我无法让 replace() 在这里工作近 4 小时,所以我回到了正则表达式。我忘记了 angular 添加class="ng-scope"到其权限范围内的每个 dom 元素(AFAICT),所以我需要将它粘贴在我的正则表达式中以使其正常工作。另请注意,“msrc”是从 dom 中提取的,尽管这似乎对特定问题没有实质性的影响:

  $scope.footermenu = function () {
        var msrc = $('#menu').html();
        var nospans = function() {
          return msrc.replace(/<span class=\"ng-scope\">(.*?)<\/span>/g,'');
        }
        var mcln = $('<div/>').append( nospans() ).html();
        alert(mcln);
    };

需要进行相当多的清理工作并对页脚代码进行额外修改,但无论如何都要克服这个障碍。感谢@munsai 提供了相当重要的提示。在别处指出 msrc !== $(msrc),所以这个解决方案绕过了那个特定的问题(假设信息是正确的)。

于 2013-10-23T16:50:29.073 回答