我有一个问题,如果“ span”包含“ div”元素,我想隐藏“ i”元素。“ span”包含通过AJAX加载为HTML呈现的文本,该文本可能包含也可能不包含“ div class = difference”
代码看起来像这样:
JAVASCRIPT:
$scope.hasChild = function() {
if ($('span.difference').has('div'))
return true;
else
return false;
};
HTML:
<ul ng-repeat="instance in value">
<li>
<i class="fa fa-warning" style="color: #ff6a00;" ng-if="hasChild()"></i>
<span class="difference" ng-bind-html="trustAsHtml(instance.Dati)"></span>
</li>
</ul>
它始终显示警告图标
我究竟做错了什么?
由于jQuery.has()
总是返回一个对象,即使您的跨度为空,条件也始终为true。尝试类似的东西
$scope.hasChild = function() {
return $('span.difference').find('div').length > 0;
};
但这将span
与class一起搜索所有内容difference
。尝试Dati
改为检查instances属性。
<i class="fa fa-warning" style="color: #ff6a00;" ng-if="hasChild(instance.Dati)"></i>
$scope.hasChild = function(dati) {
var dummy = document.createElement("div"); //create a dummy element
dummy.innerHTML = dati;
return $(dummy).find("> div").length > 0; //check if it has divs inside
};
顺便说一句:您不应该将内嵌元素放在块元素中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句