我有一個彈出框,通過AJAX檢索內容數據並顯示此內容。這由異步功能generateInfoboxContent()
負責,檢索的HTML內容是boxText
。將顯示的內容取決於用戶點擊的項目。 infoboxes[i].setContent
和infoboxes[i].open()
是將內容添加到HTML頁面的函數。無法使用jQuery選擇div(動態生成)
問題:我想使用jQuery使用.click()
但點擊處理程序似乎並沒有被觸發此動態生成的內容boxText
中選擇一個div infobox_header_favorite
!我怎樣才能解決他的問題?
jQuery代碼
(function(i) {
var boxText = generateInfoboxContent(infoboxes[i].listing_id, function(boxText) {
infoboxes[i].setContent(boxText);
infoboxes[i].open(map, markers[i]);
infoboxes[i].show();
infoboxes_open.push(infoboxes[i]);
console.log('Hello');
// Favorite function
$("#infobox_header_favorite").click(function() {
console.log('favorite!');
toggleFavorite(infoboxes[i].listing_id);
});
});
})(i);
結果
Hello
被寫入到控制檯,但favorite!
點擊股利infobox_header_favorite
當沒有寫入控制檯日誌。
UPDATE
jQuery代碼
$.getJSON(base_url + 'index.php/main/getplaces',
{ data: data },
function(json){
for(i = 0; i < json.length; i++) {
(function(i) {
var boxText = generateInfoboxContent(infoboxes[i].listing_id, function(boxText) {
infoboxes[i].setContent(boxText);
infoboxes[i].open(map, markers[i]);
infoboxes[i].show();
infoboxes_open.push(infoboxes[i]);
console.log('Hello');
// Favorite function
$("#infobox_header_favorite").click(function() {
console.log('favorite!');
toggleFavorite(infoboxes[i].listing_id);
});
});
})(i);
}
});
UPDATE 2
for(i = 0; i < json.length; i++) {
(function(i) {
var boxText = generateInfoboxContent(infoboxes[i].listing_id, function(boxText) {
infoboxes[i].setContent(boxText);
infoboxes[i].open(map, markers[i]);
infoboxes[i].show();
infoboxes_open.push(infoboxes[i]);
console.log('Hello');
// Favorite function
$("#infobox_header_favorite").on("click", function() {
console.log('asd');
toggleFavorite(infoboxes[i].listing_id);
});
});
})(i);
}
接收到錯誤Uncaught TypeError: Object [object Object] has no method 'on'
被棄用有沒有在你的頁面的ID「#infobox_header_favorite」的實際元素?我們需要更多信息。 – 2011-12-19 17:55:15
'
'是'boxText'的一部分。直到'infoboxes [i] .open()'執行完畢纔會存在。 – Nyxynyx 2011-12-19 17:57:12如果您不創建多個與infobox_header_favorite id綁定,該怎麼辦?或者你正在創建多個具有相同ID的元素... – Alfabravo 2011-12-19 18:29:04