当我尝试从元素中删除attr标题时,它会在第二次将元素删除时将其删除。
此问题仅发生在Internet Explorer中。
这是代码:
$('span').live({"mouseover": function(){
clearTimeout($(this).data('timeoutId'));
var title = $(this).attr('title');
$(this).removeAttr("title");
if($(this).children('.tip-hover').length > 0){
if($(this).children('.tip-hover').is(':visible') == false){
$(document).find('.tip-hover').hide();
$(this).children('.tip-hover').fadeIn(100);
}else{
$(document).find('.tip-hover').hide();
$(this).children('.tip-hover').show();
}
}else{
if(title != false){
var height = $(this).css('line-height') + 2;
$(this).prepend('<div class="tip-hover"><div class="tip-top"></div><div class="tip-hover-wrap"><div class="tip-hover-inner">' + title + '</div></div></div>');
$(this).children('.tip-hover').css("margin-top", height + "px");
var width = $(this).width() / 2;
$(this).children('.tip-hover').css("padding-left",width+"px");
}
}
},
"mouseout": function() {
var someelement = this;
var timeoutId = setTimeout(function(){ $(someelement).find(".tip-hover").fadeOut("slow");}, 350);
$(someelement).data('timeoutId', timeoutId);
}
});
答案 0 :(得分:4)
第一次显示title
的原因是因为您只删除title
上的mouseover
属性。到那时,已经太晚了!
我建议您在加载文档后立即删除事件处理程序之外的标题属性,并将备份保存在自定义data-*
属性中。
$(function() {
$('span').each(function() {
var $this = $(this);
$this
.data('title', $this.attr('title'))
.removeAttr('title');
});
});
然后,在您的代码中,而不是......
var title = $(this).attr('title');
使用:
var title = $(this).data('title');