:empty 和 :blank 里面有注释

Ros*_*cal 6 html css sass

我正在使用:empty:blank。它们工作得很好,但我有一个例子,AngularJS 在 a 中注入注释div,而这些将不再工作。我可以做些什么来制作:empty:blank处理评论吗?

Hit*_*nds 0

您可以做一些事情...尝试看看:https://docs.angularjs.org/guide/product关注$compileProvider.debugInfoEnabled(false);...

一般来说,使用:empty(或其他)伪选择器来选择空元素并不是一个好主意,因为选择器对所有内容都敏感,包括空格。有一个例子:

div {
  width: 30px;
  height: 30px;
  background: cyan;
  margin: 5px;
}

div:empty { display: none; }
Run Code Online (Sandbox Code Playgroud)
<div>

</div>
<div> </div>

<!-- just this -->
<div></div>
Run Code Online (Sandbox Code Playgroud)

编辑

一个可能的解决方法是创建一个自定义指令来为您执行此操作,但是,当然,应该将其手动添加到您想知道它们是否为空的元素中。这是一个例子:

angular
  .module('test', [])
  .directive('emptyClass', function() {
    return function postLink(iScope, iElement, iAttrs) {
      
      function updateOnChanges() {
        var classname = iAttrs.emptyClass;
        
        var hasContent = iElement.children().length > 0 ||
            iElement.text().trim().length > 0;
        
        if(hasContent) {
          return iElement.removeClass(classname);
        }
        
        return iElement.addClass(classname);
      }
      
      iElement[0].addEventListener(
        "DOMSubtreeModified", updateOnChanges, false
      );
      updateOnChanges();
    }
  })
;
Run Code Online (Sandbox Code Playgroud)
.is-empty { background: cyan; display: block; min-height: 20px; margin: 10px; }
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<section ng-app="test">
  <h1 empty-class="is-empty">  </h1>
  <h1 empty-class="is-empty"></h1>

  <h1 empty-class="is-empty">
    <!-- ng-if: "oh Yeah" -->
  </h1>
  
  <h1 empty-class="is-empty"> Hello World </h1>
  <h1 empty-class="is-empty"><span>Hello World</span></h1>
</section>
Run Code Online (Sandbox Code Playgroud)