使用AngularJS单击兄弟姐妹时,获取元素兄弟姐妹的惯用方法是什么?
到目前为止,我有这个:
<div ng-controller="FooCtrl">
<div ng-click="clicked()">One</div>
<div ng-click="clicked()">Two</div>
<div ng-click="clicked()">Three</div>
</div>
<script>
function FooCtrl($scope){
$scope.clicked = function()
{
console.log("Clicked", this, arguments);
};
}
</script>
Run Code Online (Sandbox Code Playgroud)
这是一个jQuery实现作为一个具体的例子:
<div id="foo">
<div>One</div>
<div>two</div>
<div>three</div>
</div>
<script>
$(function(){
$('#foo div').on('click', function(){
$(this).siblings('div').removeClass('clicked');
$(this).addClass('clicked');
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
Mar*_*cok 25
使用指令,因为您想要遍历DOM:
app.directive('sibs', function() {
return {
link: function(scope, element, attrs) {
element.bind('click', function() {
element.parent().children().removeClass('clicked');
element.addClass('clicked');
})
},
}
});
Run Code Online (Sandbox Code Playgroud)
<div sibs>One</div>
<div sibs>Two</div>
<div sibs>Three</div>
Run Code Online (Sandbox Code Playgroud)
请注意,jQuery不是必需的.
这是您提供的jQuery示例的角度版本:
HTML:
<div ng-controller="FooCtrl">
<div ng-click="selected.item='One'"
ng-class="{clicked:selected.item=='One'}">One</div>
<div ng-click="selected.item='Two'"
ng-class="{clicked:selected.item=='Two'}">Two</div>
<div ng-click="selected.item='Three'"
ng-class="{clicked:selected.item=='Three'}">Three</div>
</div>
Run Code Online (Sandbox Code Playgroud)
JS:
function FooCtrl($scope, $rootScope) {
$scope.selected = {
item:""
}
}
Run Code Online (Sandbox Code Playgroud)
注意:您不必严格要求访问DOM.但是,如果您仍然想要,那么您可以编写一个简单的指令.如下所示:
HTML:
<div ng-controller="FooCtrl">
<div ng-click="clicked()" get-siblings>One</div>
<div ng-click="clicked()" get-siblings>Two</div>
<div ng-click="clicked()" get-siblings>Three</div>
</div>
Run Code Online (Sandbox Code Playgroud)
JS:
yourApp.directive('getSiblings', function() {
return {
scope: true,
link: function(scope,element,attrs){
scope.clicked = function () {
element.siblings('div').removeClass('clicked');
element.addClass('clicked');
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33459 次 |
| 最近记录: |