【问题标题】:Angularjs directive - select next element by a class nameAngularjs 指令 - 通过类名选择下一个元素
【发布时间】:2014-01-16 08:17:50
【问题描述】:

我有以下 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。

谢谢!

【问题讨论】:

    标签: angularjs jqlite


    【解决方案1】:

    您不需要指令来实现这一点:

    <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 状态。

    【讨论】:

    • 嗨,但实际上如何使用 jqlite 按类选择下一个元素?就我而言,我需要这样做,但不知道怎么做。到目前为止,我做了link.parent().next().toggleClass('active');,这当然不能按预期工作。 jQuery 等价物是link.parent().siblings('.active').toggleClass('active');。感谢您未来的回答
    猜你喜欢
    • 2016-12-11
    • 2016-09-16
    • 1970-01-01
    • 2022-01-15
    • 2011-02-26
    • 2015-09-12
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    相关资源
    最近更新 更多