2016-11-21 150 views
0

我將動態添加點擊處理程序添加到具有給定類名(本例中爲'reportLink')的div標記中的'遞歸過多'錯誤「無法弄清楚問題是什麼(範圍問題?)。代碼工作正常,如果我console.log div的innerText,但失敗時,我添加一個AJAX帖子。有沒有人在這裏看到這個問題?感謝您的幫助!動態添加點擊事件偵聽器並將郵件添加到div元素時的遞歸太多

(function() { 
const links = document.querySelectorAll(".reportLink"); 
const userName = document.getElementById("userName"); 

for (let i = 0; i < links.length; i++) { 
    let link = links[i]; 
    createEvent(link); 
} 

function createEvent(element) { 
    var etext = element.innerText; 

    element.addEventListener("click", function() { 
     $.ajax({ 
      url: 'route/myroute', 
      type: 'POST', 
      data: { user: userName, reportName: etext }, 
      success: function (data) { 
       //console.log(data); 
      } 
     }); 
    }); 
} 

})();

+0

也許'用戶:userName'應該是'用戶:userName.value' ...不知道雖然 –

+0

不知道,如果是類似的(你沒有你函數代碼中的成功塊... http://stackoverflow.com/questions/24640709/jquery-ajax-too-much-recursion-errors-showhide-and-css-fn –

+0

Guedes - 我不能相信我做到了!在將userName更改爲userName.value之後,它按照預期發佈。非常感謝! – MattyMc

回答

1

也許試試這個語法來代替:

$("body").on("click", ".reportLink", function(e) { 
    // Use $(this) for the element and get your other data.. 

    $.ajax({ 
     url: 'route/myroute', 
     type: 'POST', 
     data: { user: userName, reportName: etext }, 
     success: function (data) { 
      //console.log(data); 
     } 
    }); 
}); 
+0

我在想同一件事情,'etext'應該是'e.target.innerText'。 –

+1

Thanks Patrick!這縮短了我的代碼,預期! – MattyMc

相關問題