Angularjs 指令 - 通过类名选择下一个元素

标签 angularjs jqlite

我有以下 HTML:

<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。有谁知道为什么我不能这样做?

附言我只是依赖于没有 jQuery 的 AngularJS 内部 jqLit​​e。

谢谢!

最佳答案

你不需要指令来实现这个:

<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 状态的决定放在您的 Controller 中。

关于Angularjs 指令 - 通过类名选择下一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21156532/

相关文章:

javascript - 无法隐藏元素

angularjs - 刷新与该 Controller 一起使用的页面时,将覆盖 Controller 中使用的 $rootscope 值

javascript - AngularsJS JavaScript 匹配单词和添加字符串

javascript - 如何在Angualar的jqLit​​e元素对象中通过id查找元素

angularjs - 使用 AngularJS Jqlite,如何找到特定元素类型的元素的第一个子元素?

javascript - 在 AngularJS 中使用 jqLit​​e 附加文本

javascript - 如何使用angularjs从html调用自定义函数?

javascript - Hello world 依赖注入(inject)示例

javascript - AngularJS Jqlite 之后不添加元素

javascript - 如何在 Angular 中将 ng-attr-id 转换为 id