2017-08-16 35 views
-6

我已按照this鏈接將數據傳遞給動態創建的元素的單擊事件。但是,它不起作用。無法使用jquery.on()通過函數傳遞數據

for(var i=0; i<data.length; i++) { 
    var meterDiv = $("<div></div"); 
    meterDiv.attr('class', "container-fluid"); 
    var meterData = data[i].stompNumber + "<br/>" + data[i].stompName + "<br/>" + data[i].postId; 
    meterDiv.html(meterData); 
    var postId=data[i].postID; 
    meterDiv.on("click", {postid: postId}, function(event) { 
     parkedMeter(event); 
     console.log("paked at : " + event.data.postid); 
    }) 

    $("#meterInfo").append(meterDiv); 
} 

paked atundefined在控制檯上。同樣作爲我parkedMeter

function parkedMeter(event) { 
    console.log("postid " + event.data.postid); 
} 
+1

請[MCVE],因爲它是你的代碼片段無法運行,我們不知道什麼數據變量由parkerMeter函數聲明的方式和方式組成。 – Esko

+1

'.on()'方法似乎正確使用:問題是,什麼是'postId':並且你確定它正在被正確讀取?好像你有一個錯字:它應該是'var postId = data [i] .postId'而不是'var postId = data [i] .postID'。你有沒有試過控制檯記錄什麼'數據[我]'包含?然後你會得到一個你可以使用的有效密鑰列表。 – Terry

+0

特里的評論是正確的。我有錯字錯誤。謝謝特里! –

回答

0

作爲每jquery documentation

上功能參數1)事件2)選擇器3)數據對象4)callbackFunction參數/處理程序。

隨着你定的代碼選擇器丟失,您應該添加任何選擇

meterDiv.on("click","Selector Here" , {postid: postId}, function(event) { 
    parkedMeter(event); 
    console.log("paked at : " + event.data.postid); 
}) 
+0

根據jQuery文檔,選擇器不是必需的,可以省略。 – evolutionxbox