我正在为我的网站制作一个小工具提示功能
我完美地工作了:(在项目悬停检查时是否存在气泡并显示它。如果没有,发出请求,附加buble然后显示它)
$('.profileIcon').hover(function(){
var u = $(this);
var url = $(this).find('a').attr('href')+' #intro_usuario';
if($(this).find('.nube').length>0){
$(this).find('.nube').show();
} else {
//$('<div>').load(url).addClass('nube').css({'left':$(this).offset().left+$(this).outerWidth(true)+15,'top':$(this).offset().top}).appendTo(this).show();
$('<div>').addClass('nube').addClass('nubeU').load(url,function(){
$(this).css({'left':-20,'top':-16}).appendTo(u).show();
});
}
});
它只会在第一次用户悬停时发出请求并附加工具包(.nube)div,下次只会显示它(没有请求)。
但使用ajax加载更多元素我不得不回忆它所以我想要使用live
$('.profileIcon').live('hover',function(){
var u = $(this);
var url = $(this).find('a').attr('href')+' #intro_usuario';
if($(this).find('.nube').length>0){
$(this).find('.nube').show();
} else {
//$('<div>').load(url).addClass('nube').css({'left':$(this).offset().left+$(this).outerWidth(true)+15,'top':$(this).offset().top}).appendTo(this).show();
$('<div>').addClass('nube').addClass('nubeU').appendTo(u).html($('#load').html()).load(url,function(){
$(this) .css({'left':-20,'top':-16}).show();
});
}
});
每次都要完成请求,每次附加额外的气泡
问题是:
¿为什么if($(this).find('.nube').length>0
停止使用直播?
答案 0 :(得分:2)
我不会在.live()
上浪费时间,而是转到新的替换.on()
.on()
就像直接绑定到一个事件一样,但也像live一样工作。阅读文档以获取有关如何直接绑定和“bubble-bind”的详细信息。
尝试将.live()
替换为.on()
,它们应该正常工作。
用于直接绑定(将处理程序附加到元素):
element.on('event',function(){});
表示“bubble-bind”(注意element
现在是第二个参数,并且父节点被赋予处理程序。将触发子节点,事件将冒泡到父节点以处理事件)< / p>
someParentElement.on('event','element',function(){});
另外,您在使用this
时不必担心.on()
是谁,它始终是您触发的元素,无论是直接还是泡泡。