javascript - 添加 ClickListener JQuery Mobile ListView
问题描述
我无法将 clickListener 添加到动态创建的 listView 中。我在stackoverflow上试过了,但它不起作用
出了什么问题,我该如何解决?
javascript/jquery
parseContent: function() {
$('#countries').append('<ul data-role="listview" id="mylistview" style="margin: 50px">');
$.each(jsonData, function(i, item) {
console.log(item.stad);
$('#countries').append('<li> <img src=' + "res/flags/" + item.flag + ' id="icon">' + '<span id="listlabel">' + item.country + '</span></li>').listview().listview('refresh');
$('#countries').hide().fadeIn(800);
});
$('#countries').append('<ul>');
/*
$('#mylistview').on('click', function() {
d.lg("Works"); // id of clicked li by directly accessing DOMElement property
});
*/
$('#mylistview').delegate('li', 'click', function () {
alert($(this).attr('id'));
});
}
html
<div data-role="page" id="one">
<div data-role="main" class="ui-content">
<div id="countries">
</div>
</div>
</div>
解决方案
总是这样做:
$(document).on('pagebeforeshow', '#index', function() {
$(document).on('click', '#mylistview li', function() {
alert($(this).attr('id'));
});
});
这是委托事件绑定;它不关心元素是否在 DOM 中。一旦元素在所述事件中,就会被附加到它上面。
工作示例:http: //jsfiddle.net/8Lq9fkga/
推荐阅读
- python-3.x - “采用 1 个位置参数但给出了 2 个”的 python BST 错误
- sql - 授予用户执行权限:找不到对象
- javascript - 由于二进制文件使用早于 10.9 SDK 的 SDK,电子公证失败
- python - 如何为函数本身设置 repr?
- macos - 如何使用 xxPL 命令直接与 macOS 上通过 USB 连接的打印机对话?
- javascript - 如何在 vue js 中监听“root”发出的事件?
- python - 我想在 GENRE 列中为所有包含特定字符串或使用 pandas 以“Sp”开头的电影返回“Action”
- m2doc - 使用 M2Doc 核心生成 API 和 SiriusServices 出现问题
- r - 在另一个 par 中使用 par
- google-bigquery - 如何使 BigQuery 中的预定查询不那么冗长?