纽布在这里。我一直在阅读关于事件传播的内容,我认为它可能与此有关,但是尽管我尝试并尽可能多地搜索,但我无法解决这个问题。为什么我的jquery工作/不工作如下所示?似乎for循环是某种方式的罪魁祸首,但为什么我的数据在其中不可见?我是新手,非常感谢你的帮助!非常感谢你的帮助!
$.ajax({
url: RestUrlTwo,
method: "GET",
headers: {
"accept": "application/json;odata=verbose",
},
success: function(dataTwo) {
if (data.d.results.length > 0) {
$('#CustomerGrid').append(GenerateTableFromJson(data.d.results,dataTwo.d.results,dataThree.d.results));
var oTable = $('#AllRequestsTable').dataTable({
initComplete: function() {
//JQUERY WORKS HERE ******************
$('input.title').on('input',function(){
console.log("hi");
});
}, "iDisplayLength": 100,
"aLengthMenu": [
[5, 10, 30, 100],
[5, 10, 30, 100]
],
"sPaginationType": "full_numbers"
});
}
}
});
$('input.title').on('input',function(){
console.log("hi");
});
function GenerateTableFromJson(objArray,objArrayTwo,objArrayThree) {
var tableContent = '<table summary="GFSTechIntake" id="AllRequestsTable" style="width:100%"><thead><tr><th>Submit Priority</th><th>test</th><th>Your Prev Rank</th><th>Current Overall</th><th>Category</th>' + '<th>Status</th>' +' <th>Request Name</th>' + '<th>Problem Statement</th>' + '<th>Business Benefits</th><th>Dept(s)</th></tr></thead><tbody>';
var num = [];
for (var i = 0; i < objArray.length; i++) {
for(var j = 0;j < objArrayTwo.length; j++){
if(objArray[i].Title == objArrayTwo[j].RequestName){
rank = objArrayTwo[j].Rank ? objArrayTwo[j].Rank : "";
}
}
//DOESN'T WORK HERE *************
$('input.title').on('input',function(){
console.log("hi");
});
var title = objArray[i].Title ? objArray[i].Title : "";
var category = objArray[i].Category ? objArray[i].Category : "";
var status = objArray[i].Status ? objArray[i].Status : "";
tableContent += '<tr class="allItemsTr">';
if(rank != ''){
tableContent += '<td class="allItemsPriority"><span>rank '+rank+'<input class="title" placeholder=' + rank + ' value='+rank+'></td>';
} else {
tableContent += '<td class="allItemsPriority"><input class="title" placeholder=' + rank + '></td>';
}
tableContent += '<td class="test"></td>';
tableContent += '<td class="prevRank">N/A</td>';
tableContent += '<td class="currentRank">N/A</td>';
tableContent += '<td class="category">'+category+'</td>';
tableContent += '<td class="allItemsStatus">' + status + '</td>';
tableContent += '</tr>';
}
return tableContent;
}
答案 0 :(得分:0)
因为您的表格在您遇到问题时尚未创建。
您在var tableContent
内设置function GenerateTableFromJson()
(并构建表格的内容),但实际上并非添加直到$('#CustomerGrid').append(GenerateTableFromJson)
的DOM表。您无法访问$('input.title')
,直到该元素位于DOM中。
initComplete
,此时<input class="title>
位于DOM中。因此,$('input.title')
(//JQUERY WORKS HERE
)可以在那里访问。
希望这有帮助! :)