我有一个带有两个html元素的指令,一个是ng-if
指令而另一个不是:
<div>
<div ng-if="true" id="ngIfTest">TEST WITH NG-IF</div>
</div>
<div>
<div id="withoutNgIfTest">TEST WITHOUT NG-IF</div>
</div>
我选择了这样的元素:
var ngIfElement = angular.element(elem[0].querySelector('#ngIfTest'));
var noNgIfElement = angular.element(elem[0].querySelector('#withoutNgIfTest'));
我可以选择不使用ng-if的元素,但不能选择那个使用ng-if的元素。
LIVE EXAMPLE HERE (Click on the text to see it selecting one properly)
var myApp = angular.module('myApp',[]);
myApp.directive('myDirective', function() {
return {
link: function(scope,elem) {
//var myDivElement = elem #myDiv;
var myDivElement = angular.element(elem[0].querySelector('.myDiv'));
elem.bind('click', function() {
elem.css('background-color','red');
myDivElement.css('color','blue');
console.log('Element clicked');
scope.$apply(function() {
scope.color = "red";
});
});
}
}
});
function MyCtrl($scope) {
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.1/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div ng-controller="MyCtrl">
<div id="me" style= "background-color:yellow;" my-directive>
<div id="myDiv" class="myDiv">TEST</div>
</div>
</div>
&#13;
我意识到这与ng有关 - 如果创建自己的范围,但我不知道如何解决它。
我正在绘制的相关问题:AngularJS: How to .find using jqLite?
答案 0 :(得分:5)
创建它自己的范围并不是真正的问题,因为当条件不是ngIf
时,ngShow
不会写入DOM满意,所以你的jQuery选择器永远找不到它。如果您需要元素存在于DOM中并且可以查询,请使用ngHide
和random.shuffle(list_1)
。