我試圖刪除瀏覽器生成的標題框出現與具有標題屬性的錨點。我想這樣做的原因是,它不會干擾我的工具提示jQuery。jQuery:刪除瀏覽器生成的標題屬性
截至目前,我正在刪除懸停時的標題attr,但在將您從懸停狀態中刪除後,它不會重新分配它。怎麼來的?
我試圖刪除瀏覽器生成的標題框出現與具有標題屬性的錨點。我想這樣做的原因是,它不會干擾我的工具提示jQuery。jQuery:刪除瀏覽器生成的標題屬性
截至目前,我正在刪除懸停時的標題attr,但在將您從懸停狀態中刪除後,它不會重新分配它。怎麼來的?
那是因爲
var title
在HandlerIn功能,並在處理了沒有定義。 最簡單的解決方法是將de var標題放在懸停函數之外,並將其分配給懸停處理程序。
編輯:刪除Photon所述的變量也是一個解決方案。我強烈建議你使用增值稅。如果沒有定義全局變量,您的代碼很快就會變得混亂和不可維護。但那只是我的個人意見。
那是因爲你的title
變量是mouseenter
函數中,但你使用它裏面mouseleave
。您應該將title
變量移動到hover
方法之外。
var title;
$('a.tooltip').hover(function() {
title = $(this).attr('title');
var offset = $(this).offset();
var width = $(this).outerWidth();
var height = $(this).outerHeight();
$content = $('<div class="tooltip">' + title + '</div>').fadeIn('fast');
$(this).append($content);
$(this).attr('title', '');
$content.offset({
top: offset.top + height,
left: offset.left + (width - $content.outerWidth())/2
});
}, function() {
$(this).find('div').fadeOut('fast');
$(this).attr('title', title);
});
你在你的第一個函數聲明var title = $(this).attr('title');
那裏,但你的第二個功能沒有的title
知識。
它不會重新分配標題值的原因是因爲您在第一個函數中聲明瞭標題變量,這超出了第二個函數的範圍。如果你想保留原來的標題值,你需要這樣做,第二個函數可以訪問它。
相反,嘗試將其添加到數據值:
$(this).data("originalTitle", $(this).attr("title"));
然後你的第二個函數內重新分配它:
$(this).attr("title", $(this).data("originalTitle"));
我會避免通用title
可變浮動周圍您正在設置和獲取n頁面上的鏈接。將這些值作爲數據存儲在元素本身上似乎對我來說是一種更好的方法。
只是刪除所有VAR聲明變量名
之前它將成爲全局變量See this
$('a.tooltip').hover(function() {
title = $(this).attr('title');
offset = $(this).offset();
width = $(this).outerWidth();
height = $(this).outerHeight();
$content = $('<div class="tooltip">' + title + '</div>').fadeIn('fast');
$(this).append($content);
$(this).attr('title', '');
$content.offset({ top: offset.top+height, left: offset.left+(width-$content.outerWidth())/2 });
}, function() {
$(this).find('div').fadeOut('fast');
$(this).attr('title', title);
});
我沒有說不要用VAR,但我認爲沒有變得混亂和難以維護,而不var如果你想使用變量作爲全局變量。如果你想將任何變量聲明爲全局變量,那麼首先聲明你想要在哪裏使用它,而不是在函數聲明或開始時聲明,這很容易和用戶友好。 – Trikaldarshi