我正在重新利用工具提示插件来使用live()函数。我的问题是,当我将title属性设置为''以禁用浏览器工具提示时,它会重新触发该函数,并且不允许我将title属性替换为我存储的日期,因为它会更新引用它的所有变量。我在下面发布了我最好的破解。任何帮助将不胜感激。
$('#leadgen-cpm-cost-label').live('mouseover mouseout', function(e) {
if (e.type == 'mouseover') {
$(this).data(this, 'title', this.title);
this.t = $(this).data('title');
alert(this.t);
this.title = '';
this.top = (e.pageY + yOffset); this.left = (e.pageX + xOffset);
$('body').append( '<p id="vtip"><img id="vtipArrow" />' + this.t + '</p>' );
$('p#vtip #vtipArrow').attr("src", 'common/vtip_arrow.png');
$('p#vtip').css("top", this.top+"px").css("left", this.left+"px").fadeIn("slow");
} else {
this.title = this.t;
$("p#vtip").fadeOut("slow").remove();
}});
答案 0 :(得分:0)
您没有在事件之间存储原始标题(t)。我也不确定你是什么从这个事件定位的HTML元素中提取标题元素?我对更可行的解决方案的猜测将类似于以下内容,但我必须承认我基于缺乏信息而猜测。
$('#leadgen-cpm-cost-label').live('mouseover mouseout', function(e) {
if (e.type == 'mouseover') {
if ($(this).attr('active') == 'true') { return; }
var original_title = $(this).attr('title');
$(this).data('original_title', original_title);
alert(original_title);
$(this).attr('title', '');
this.top = (e.pageY + yOffset); this.left = (e.pageX + xOffset);
$('body').append( '<p id="vtip"><img id="vtipArrow" />' + original_title + '</p>' );
$('p#vtip #vtipArrow').attr("src", 'common/vtip_arrow.png');
$('p#vtip').css("top", this.top+"px").css("left", this.left+"px").fadeIn("slow");
$(this).attr('active', 'true');
} else {
if (($this).attr('active') != 'true') { return; }
$(this).attr('title', $(this).data('original_title');
$("p#vtip").fadeOut("slow").remove();
$(this).attr('active', 'false');
}
});
我继续并添加了快速活动检查,这可能会帮助您,具体取决于调用的并发时间。