2014-01-16 53 views
2

我有以下HTML:Angularjs指令 - 一类名来选择下一个元素

<div> 
    <input type="text" ng-model="search.q" special-input> 
    <ul class="hidden">...</ul> 
    <ul class="hidden bonus">...</ul> 
</div> 

与以下指令:

myApp.directive('specialInput', ['$timeout', function($timeout) 
{ 
    return { 
    link: function(scope, element) { 
     element.bind('focus', function() { 
     $timeout(function() { 
      // Select ul with class bonus 
      element.parent().find('.bonus').removeClass('hidden'); 
     }); 
     }); 
    } 
    } 
}]); 

我要选择使用jqLit​​e的ul.bonus但不能想办法。我尝试使用.next(“。bonus”),但选择器完全被忽略,并且选择了第一个ul。有没有人有一个想法,为什么我不能这样做?

P.S.我只是依靠没有jQuery的AngularJS内部jqLit​​e。

谢谢!

回答

2

你不会需要一个指令来实现这一目标:

<div> 
    <input type="text" 
      ng-model="search.q" 
      ng-focus="bonus=true" 
      ng-blur="bonus=false"> 
    <ul class="hidden">...</ul> 
    <ul ng-show="bonus">...</ul> 
</div> 

,如果你的需求是更复杂的把有关bonus状态决定在您的控制器。

+0

谢谢,你说得对,这种方法好得多 – Angelin

+0

嗨,但实际上如何使用jqlite按类选择下一个元素?在我的情况下,我需要做,但不知道如何。到目前为止,我没有'link.parent()。next()。toggleClass('active');'这当然不能按预期工作。 jQuery相当于'link.parent()。siblings('.active')。toggleClass('active');'。感谢您的未来答案 – lkartono