为什么不能在ajax中动态创建图标?
通常,当我写以下内容时:为什么不能在ajax中动态创建图标?,ajax,dynamic,getjson,popover,dynamic-content,Ajax,Dynamic,Getjson,Popover,Dynamic Content,通常,当我写以下内容时: <a id="sta_numberOfIcons" class="icon-user" rel="popover"></a> 它可以工作,我可以看到图标的弹出窗口。但是当我写下面的代码时,我可以动态创建图标,但是我不能为新创建的图标显示弹出窗口 html部分: Stations: <select name="selectStation" id="selectStation" onchange="sta_callStation(this
<a id="sta_numberOfIcons" class="icon-user" rel="popover"></a>
它可以工作,我可以看到图标的弹出窗口。但是当我写下面的代码时,我可以动态创建图标,但是我不能为新创建的图标显示弹出窗口
html部分:
Stations:
<select name="selectStation" id="selectStation" onchange="sta_callStation(this);"></select>
<a id="sta_numberOfIcons" class="icon-user" rel="popover"></a>
<div id="infoOfPassengers"></div>
<div id="distType"></div>
<div id="distParams"></div>
图标出现在页面的组合框下。我只是想试试,我不知道如何将新创建的图标插入到标记中。我只是将新创建的图标附加到标记中。这里有什么问题?为什么我不能为创建的图标显示弹出框?请提供帮助。您拥有的JS代码成功地连接了元素
$([rel=popover])的弹出框
需要在动态添加图标后执行
您可以将这些行粘贴到sta\u callStation()
中逻辑的末尾,但最好将它们放入自己的函数中,并从sta\u callStation()调用它
比如:
function bindMyPopovers() {
$("a[rel=popover]").each(function(){
$(this).popover({
trigger: 'hover',
placement: 'top',
html: true,
title:"Passenger Info",
content: "content "+$(this).attr('id')
})
.click(function(e) {
e.preventDefault()
});
});
}
非常感谢。我可以再问一个问题吗?如何从另一个php文件中填充popover的内容?例如,我有一个Passenger.php文件,其中有乘客id、from、where等,我可以使用上面相同的结构,比如Stations.php,我可以编写getJSON。但是调用showPassenger()后bindMyPopover()必须出现在哪里或者在showPassenger()之前?如果我正确理解您正在尝试做什么(基于您的评论),那么您还需要为弹出窗口的内容:
提供动态内容。在我看来,popover
插件有一些内置的支持,可以提供最简单的方法来做你想做的事情。仔细看一下名为加载AJAX内容的部分,我仍然无法使用AJAX加载内容。:/无论如何,谢谢
function sta_callStation(sel){
$('#noOfPassengers, #infoOfPassengers, #distType,#distParams').empty();
$('#sta_numberOfIcons').empty();
$.getJSON('Stations.php', function(station){
$.each(station, function(sta_key, sta_value) {
if(sel.value==sta_key)
{
$.each(sta_value.passengers, function(j,passengers)
{
var pas_icon = document.createElement("a");
pas_icon.className ='icon-user';
pas_icon.id='id_'+j;
pas_icon.setAttribute('href', '#');
pas_icon.setAttribute('rel', 'popover');
//alert('id_'+(j));
var empty=document.createElement("a");
empty.appendChild(document.createTextNode(" "));
document.getElementById('sta_numberOfIcons').appendChild(pas_icon);
document.getElementById('sta_numberOfIcons').appendChild(empty);
});
}
});
});
}
function bindMyPopovers() {
$("a[rel=popover]").each(function(){
$(this).popover({
trigger: 'hover',
placement: 'top',
html: true,
title:"Passenger Info",
content: "content "+$(this).attr('id')
})
.click(function(e) {
e.preventDefault()
});
});
}