javascript - 隐藏具有相同类的所有特定 div 的 Angular 方式是什么

标签 javascript jquery html angularjs angularjs-directive

我想做一件简单的事:

我有一个应用程序,它有某些 div 需要显示(只有特定的一个),如果在它之外的某个地方单击则隐藏(例如,所有具有特定类的)。

使用 jquery 很容易:

$('some-class').style('display','none') //psuedo code here

我应该如何对 angular js 做同样的事情?

这样做的具体原因:

我想构建一个简单的选择下拉列表(我不想使用现有的,我想了解这个...),当我单击一个时,它应该会在按钮正下方打开一个 div ,当我点击它的外部时,它应该不仅关闭这个,而且关闭应用程序中类似的其他一些元素。

有一点值得一提:并非我所有的选择框都是预呈现的,有些是动态添加的(内部指令),因此并非所有选择框都在 $scope 中,而是在它们内部具有隔离范围的指令。

最佳答案

最好为这类事情制定指令:

为 toggleDisplay 做一个指令如下

app.directive('toggleDisplay', function() {
  return function(scope, element) {
    element.bind('click', function() {
     element.toggleClass('unneeded-class'); // or something else
    });
  };
});

然后您可以将此指令应用于 html 中的任何元素:

<div toggle-display></div>

您可以按照此模式制作下拉逻辑或 Accordion 等

How do i listen to a click anywhere in the app, that when i click it and "that" element is not the select box, close all the select boxes?

假设您有一个打开/显示的 div,当您在其外部单击时想要隐藏它。给它一个类“divvy”并将以下指令附加到它的包装容器中:

 app.directive('toggleFocus', function() {
      return function(scope, element) {
        element.bind('click', function() {
         if(!element.hasClass('divvy'))
         angular.element(document.querySelector('.divvy')).css({display:'none'}) 
        });
      };
    });

html:

<div toggle-focus>
   <div class="divvy"></div>
</div>

关于javascript - 隐藏具有相同类的所有特定 div 的 Angular 方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27639780/

相关文章:

javascript - 如何为 [ngStyle] 设置动态 css 样式

javascript - 如何在 swift UIWebView 中获取 javascript 函数?

javascript - CSS 过渡高度变化不起作用

javascript - 如何通过按不同的键来模拟按键

javascript - jQuery UI 多个可调整大小的 div 不大于父 div

python - 如何查找未包含在标签中的字符串

c# - ASP.NET 从 JavaScript 调用 C# 函数

javascript - 如何使用 Vue js 显示 Cockpit CMS JSON 数据

javascript - Google Maps API 教程中这个函数有什么意义?

javascript - 使用日期选择器关注下一个表单元素