【问题标题】:get children div id of li on double click using AngularJS使用AngularJS双击获取li的子div id
【发布时间】:2015-08-10 19:22:43
【问题描述】:

我在当前项目中使用 Angular JS。我需要在双击 li 标签时获取嵌套在 li 标签中的 div 标签的 id。见下面的代码。

我尝试了儿童逻辑,但它不起作用。

        var mainMod = angular.module('chartApp', []);
        mainMod.controller('chartAppController', ['$scope', function ($scope) {
            var flag = 1;
            $scope.doubleClick = function (event) {
                var chId = $(this).children('div.panel.panel-primary').children('div.panel-body.chartBody').children('div').attr('id');
                alert(chId);
            }
             }
        }])

下面是代码结构。

<div class="container-fluid" data-ng-app="chartApp" data-ng-controller="chartAppController">
            <ul id="dashboard">
                @foreach (var chart in chartCollection)
                {
                    <li ng-dblclick="doubleClick($event)">
                        <div class="panel panel-primary">
                            <div class="panel-heading chartTileHeader">
                                <span class="chartTitle">@chart.Title</span>
                                <div class="chartIcon">
                                    <i class="fa fa-folder-open"></i>
                                </div>
                            </div>
                            <div class="panel-body chartBody">
                                <div id=@chart.Id>
                                .....
                                </div>  
                            </div>
                        </div>
                    </li>
                }
            </ul>
        </div>

【问题讨论】:

    标签: jquery html angularjs razor asp.net-mvc-5


    【解决方案1】:

    我试过这个:

    event.target 适用于

  • 标签中的特定元素。
     var chId = $(event.target).find('div.panel-body.chartBody > div').attr('id')
    

    但如果你想在双击时获得

  • 标签的子层次结构,那么你应该使用 event.currentTarget
    var mainMod = angular.module('chartApp', []);
        mainMod.controller('chartAppController', ['$scope', function ($scope) {
            var flag = 1;
            $scope.doubleClick = function (event) {
                var chId = $(event.currentTarget).find('div.panel-body.chartBody > div').attr('id');
                alert(chId);
            }
             }
        }])  
    
  • 【讨论】:

      【解决方案2】:

      试试这个:

      var chId = $(event.currentTarget).find('div.panel-body.chartBody > div').attr('id')

      【讨论】:

      • 此解决方案适用于 jquery。但我必须使用 angularjs 所以这在 angularjs 中不起作用
      • 我更新了我的答案。您正在发送事件对象,使用它的目标属性来访问单击的元素。
      • 我也试过 event.target 但这取决于我双击的位置。意味着我的
      • 标签包含两个
        标签,如果我双击第一个 div event.target 将返回第一个 div。但我希望
      • 作为父母并从中找到孩子。
    • 嗯好的。尝试 event.currentTarget 而不是 event.target
    • 【解决方案3】:

      使用 find 选择器查找特定元素

      $(this).find('div.panel-body.chartBody div').map(function(){
             return this.id;
        }).get();
      

      如果你有单个 div

      $(this).find('div.panel-body.chartBody > div').attr('id')
      

      【讨论】:

      • 我调试了代码,但 $(this) 在 angularjs 中不起作用。我在 jquery 中尝试过它在 jquery 中工作正常,但我必须使用 angularjs
      猜你喜欢
      相关资源
      最近更新 更多
      热门标签