[英]How to bind elements generated dynamically within a Jquery UI tooltip
I am using Jquery UI Tooltip Widget to generate a tooltip which in turn sends an AJAX request to fetch data from the server. 我正在使用Jquery UI工具提示小部件生成工具提示,该工具提示又发送AJAX请求以从服务器获取数据。 I am trying to bind an element generated dynamically through the AJAX request using Jquery .on()
我正在尝试使用Jquery .on()
绑定通过AJAX请求动态生成的元素。
However, it works only half the time. 但是,它只能工作一半时间。
I have found some similar questions but they deal with Bootstrap tooltip which is completely different. 我发现了一些类似的问题,但是它们处理的Bootstrap工具提示完全不同。
HTML: HTML:
<ul id="carCatalogList">
<li id="1">Car 1</li>
<li id="2">Car 2</li>
<li id="3">Car 3</li>
<li id="4">Car 4</li>
<li id="5">Car 5</li>
<li id="6">Car 6</li>
</ul>
Javascript: 使用Javascript:
$('#carCatalogList li').tooltip({
items: 'li',
show: true,
content: function(callback) {
$.post('fetchCar.php', {id: $(this).attr('id')}, function(data){
callback(data);
});
},
position: { my: "center bottom", at: "left-65 top" },
open: function(event, ui){
if (typeof(event.originalEvent) === 'undefined')
{
return false;
}
var id = $(ui.tooltip).attr('id');
$('div.ui-tooltip').not('#' + id).remove();
$('.carStar').on('click', function(event){
idVal = $(this).attr('data-car');
hrefVal = 'carStar.php?id=' + idVal;
$.post(hrefVal, {}, function(data){
$('#' + id).fadeOut(function(){
$(this).remove();
$('#' + idVal).remove();
});
});
});
},
close: function(event, ui)
{
ui.tooltip.hover(function()
{
$(this).stop(true).fadeTo(400, 1);
},
function()
{
$(this).fadeOut('400', function()
{
$(this).remove();
});
});
}
});
You can reinitialize tooltip plugin after dynamically added items. 您可以在动态添加项目后重新初始化工具提示插件。
var tooltipOptions = {
items: 'li',
show: true,
content: function(callback) {
$.post('fetchCar.php', {id: $(this).attr('id')}, function(data){
callback(data);
});
},
position: { my: "center bottom", at: "left-65 top" },
open: function(event, ui){
if (typeof(event.originalEvent) === 'undefined')
{
return false;
}
var id = $(ui.tooltip).attr('id');
$('div.ui-tooltip').not('#' + id).remove();
$('.carStar').on('click', function(event){
idVal = $(this).attr('data-car');
hrefVal = 'carStar.php?id=' + idVal;
$.post(hrefVal, {}, function(data){
$('#' + id).fadeOut(function(){
$(this).remove();
$('#' + idVal).remove();
});
});
});
},
close: function(event, ui)
{
ui.tooltip.hover(function()
{
$(this).stop(true).fadeTo(400, 1);
},
function()
{
$(this).fadeOut('400', function()
{
$(this).remove();
});
});
}
};
Call this once for initialization and when you append any element dynamically 一次调用此方法进行初始化,并在动态添加任何元素时调用
$('#carCatalogList li').tooltip(tooltipOptions);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.