JS后添加<在现有的<ul>中,我无法使用click事件选择它
After JS append a <li> in existing <ul>, i cannot selected it with click event
我有一个下拉列表(Bootstrap),在这个下拉列表中选择了一个元素后,我用ajax调用php文件来加载一个新的下拉列表的特定内容。
在我的JS脚本中,我添加了在现有ul列表中找到的结果。
我的问题是在我的ul列表中添加新的li元素#submitPoint之后,我不能用选择器从js中选择它们。我不知道为什么,但JS似乎没有看到他刚才附加的新元素…
这里的PhP代码有两个下拉列表,一个用于流名称,另一个用于流的提交点:
print "<div class='row'>" ;
print "<div id='flowsPane' class='col-sm-6' style='display: true;'>" ;
print "<div class='btn-group'>" ;
print "<a id='dropdownText1' class='btn btn-default dropdown-toggle btn-select' data-toggle='dropdown' href='#'>Select a Flow <span class='caret'></span></a>" ;
print("<ul id='flows' class='dropdown-menu'>");
foreach ($flows as $flow) {
print("<li id='" . $flow . "'>" . $client->getNameOfFlow($flow) . "</li>");
}
print "</ul>" ;
print "</div>" ;
print "</div>" ;
print "<div id='submitPointPane' class='col-sm-6' style='display: none;'>" ;
print "<div class='btn-group'>" ;
print "<a id='dropdownText2' class='btn btn-default dropdown-toggle btn-select' data-toggle='dropdown' href='#'>Select a SubmitPoint <span class='caret'></span></a>" ;
print("<ul id='submitPoint' class='dropdown-menu'>");
下面是JS代码:
<script type="text/javascript">
$(document).ready(function() {
$("#flows li ").click(function(e){
var flow = $(this).text();
//window.alert(flow);
document.getElementById('dropdownText1').innerHTML = flow + ' <span class="caret"></span>';
});
$('#flows li').click(function(e) {
$("#submitPointPane").show();
//window.alert(e.target.id);
var post_url = "include/submitpoint_list.php";
$.ajax({
type: 'POST',
url: post_url,
data: {'flowId': e.target.id},
dataType: 'json ',
success: function(data) {
$("#submitPoint").empty();
var ite = 0;
while (ite < data.length) {
$("#submitPoint").append("<li>" + data[ite] + "</li>");
//document.getElementById('submitPoint').innerHTML = "<li>" + data[ite] + "</li>";
ite++;
}
return false;
},
error: function(xhr, status, error) {
window.alert("error " + xhr.responseText);
}
});
//return false;
});
$("#submitPoint li").click(function(e){
var sp = $(this).text();
window.alert(sp);
document.getElementById('dropdownText2').innerHTML = sp + ' <span class="caret"></span>';
});
});
</script>
所以在ul #submitPoint
中附加li
元素后,如果我点击它,#submitPoint li
点击函数永远不会调用,但li
元素出现在我的列表....(抱歉我不能添加图片)
你有任何想法,可以帮助我的问题,为什么JQuery选择器不能正常工作为新的li
元素追加?谢谢大家!
您遇到的问题是由一个简单的事实引起的,即您动态创建的<li>
项目没有为附加的单击事件提供均匀的侦听器。
您需要的是使用.on()
方法,为动态创建的元素附加一个事件侦听器。
// The event listener is being applied to the parent.
$('#flows').on('click', 'li', callback);
您可以使用jQuery的.on()
方法将事件侦听器绑定到现在和将来存在的元素。http://api.jquery.com/on/
相关文章:
- 选择onclick事件jquery
- 如何在触发事件后选择select选项
- 什么是“;选择“;然后触发事件
- 类似jQuery的主干事件选择器
- 用于关闭和打开的Jquery事件选择下拉菜单,而不是在更改时
- 点击事件:选择要按 ID 点击的项目
- 如何在 HTML 中使用 OnClick 事件<选择>
- 将事件选择器委托为第 n 个元素不起作用
- jQuery 单击事件选择选项不适用于 jQuery Mobile 框架
- extjs数据视图未找到事件选择
- 使用jQuery为触摸事件选择区域
- 如何调用不同的事件选择并点击jstree(vakata)
- jQuery点击事件选择元素不工作的期望在Chrome 54
- Javascript动态onChange事件选择
- 点击事件选择器语法
- 使用mouseup事件选择文本,使用调用函数选择dbclick事件
- 如何使用Javascript使onclick事件选择被单击的元素的id ?
- OfficeJs/WordJs通过索引和绑定单击事件选择文本范围
- jQuery/javascript事件选择展开/折叠
- JS后添加<在现有的
- 中,我无法使用click事件选择它