Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 创建div后如何获取div的长度_Javascript_Jquery_Angularjs - Fatal编程技术网

Javascript 创建div后如何获取div的长度

Javascript 创建div后如何获取div的长度,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我正在做一篇$http(角度)文章,然后在那里画ng repeat一些div 之后我需要知道我刚刚创建了多少个div,然后在JQuery中进行了一些DOM操作 这是我的代码: function ContactController($scope, $http,$location) { $http.post('/Home/MakeThings', '{}').then( function (obj) { $scope.questionsArr = obj.data; conso

我正在做一篇
$http
(角度)文章,然后在那里画
ng repeat
一些div

之后我需要知道我刚刚创建了多少个div,然后在
JQuery
中进行了一些
DOM
操作

这是我的代码:

function ContactController($scope, $http,$location) {

$http.post('/Home/MakeThings', '{}').then(
function (obj) {


    $scope.questionsArr = obj.data;
    console.log($scope.questionsArr);

    var numBox = $('div[class^="boxQ"]').length;
    console.log(numBox);

    $scope.changeRoute = function (myPath) {
        console.log($scope.myPath);
        $location.path(myPath);
    }

},
function (error) {

});
}

我无法访问

$('div[class^=“boxQ”]”)

因为我猜,它还没有被ng重复画出来


我能做些什么来选择它。

我不知道你到底想做什么,但我认为指令能够做你想做的任何操作才是正确的选择。该示例在$scope上生成一个questionsArr数组。这些都显示为ng repeat和自定义指令。指令是执行操作的内容。我在单击元素时切换boxQ类

var mod = angular.module("myApp", []);

mod.controller("MainController", function ($scope) {
    $scope.questionsArr = [
        "What is your name?",
        "Where do you live?"
    ];
});

mod.directive("questionBox", function () {
    return {
        restrict: "A",
        transclude: true,
        template: '<div ng-transclude></div>',
        link: function (scope, elem, attrs) {
            //elem refers to the jQuery/jqLite
            //element of the directive (e.g. <div questionBox></div).

            //Just toggling class on click
            elem.on("click", function () {
                elem.toggleClass("boxQ");
            });
        }
    }
});
var mod=angular.module(“myApp”,[]);
模块控制器(“主控制器”,功能($scope){
$scope.questionsArr=[
“你叫什么名字?”,
“你住在哪里?”
];
});
修改指令(“问题框”,函数(){
返回{
限制:“A”,
是的,
模板:“”,
链接:功能(范围、要素、属性){
//元素指的是jQuery/jqLite

//指令的要素(例如,如果你的ng repeat是从你放在$scope上的questionsArr中删除的,那么它只是其中的项目数。只需检查questionsArr.length就可以知道创建的div的数量。通常最好尝试在angular控制器中限制jquery操作。这很好,但我也需要进行DOM操作。比如adding一个css,在ng repeat中设置div的动画,等等,为什么你不做一个指令,然后在其中进行DOM操作。很快就会发布fiddle。在控制器中设置选择器是一个很强的错误指示。
<div ng-app="myApp" ng-controller="MainController">
    <div ng-repeat="q in questionsArr">
        <div question-box>{{q}}</div>
    </div>
</div>