簡體   English   中英

$(document).ready()中的函數未找到DOM的主體元素

[英]function in $(document).ready() not finding body element of DOM

我正在編寫AngularJS Web應用程序,並且在需要在作用域內調用函數的任何作用域之外都有一個函數。 我調用該函數並按照答案中給出的說明進行操作。

function returnDest(callback) {
$(document).ready(angular.element(document.getElementById('body')).scope().getTask(function() {
    if(callback) {
        callback(locationInfo);
    }
}));
}

它經常工作,但有時功能無法成功運行。 調試器給我:

Uncaught TypeError: Cannot read property 'getTask' of undefined

我不知道為什么在$(document).ready應該僅在加載DOM之后才觸發該函數,為什么在未定義的函數上調用該函數。 如果使用$(window).load(),則會彈出相同的錯誤。 如何確保此功能成功運行?

供參考,這是HTML文件中定義“ body”元素的行

<body style="background-color:#e6e8f3" ng-app="app" ng-controller="controller" id="body">

$(document).ready應該在您的函數之外:

$(document).ready(function returnDest(callback) {
angular.element(document.getElementById('body')).scope().getTask(function() {
    if(callback) {
        callback(locationInfo);
    }
})});

angular.element返回一個jQuery對象。

ready()期望傳遞給它的參數是文檔准備好時將調用的函數

這聽起來像你需要用你正在試圖通過一切readyfunction () { ... }

您使用的.ready錯誤。 在DOM准備就緒之前調用returnDest的那一刻,它會嘗試獲取ID為body的元素。 由於未加載,因此無法訪問body 取而代之的是,省略body ID並按以下方式使用它:

function returnDest(callback) {
  $(document).ready(function() {
    angular.element(document.body).scope().getTask(function() {
      if (callback) {
        callback(locationInfo); // Not sure where locationInfo is coming from
      }
    });
  });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM