因此,無需額外的代碼,這是一個比特的盲鏡頭的[在由構件託尼答覆研究編輯] ,但在我看來,這裏有兩點需要思考:1.默認的瀏覽器工具提示行爲; 2.可能更新的DOM以及自定義工具提示繼續運行的功能。
關於#1:當您將自定義事件綁定到元素時,可以使用event.preventDefault()
,以便不出現工具提示。這不能正常工作。因此,繼續使用「title」屬性的解決方法是獲取該值,將其推入數據對象($.data()
函數),然後用空字符串(removeAttr不一致)爲空標題。然後在mouseleave上,您從數據對象中獲取值並將其推回到標題中。這個想法來自這裏:How to disable tooltip in the browser with jQuery?
關於#2:而不是重新綁定DOM的變化,你只需要綁定一次從來沒有被期望銷燬的監聽器元素。通常這是某種類型的容器元素,但如果您真的需要一個包含所有容器的容器,它甚至可以是document
(接近.live()
,現在已被棄用)。下面是一個使用我自己設計的一些假標記的樣本:
var container = $('.section');
container.on('mouseenter', 'a', function() {
var $this = $(this);
var theTitle = $this.attr('title');
$this.attr('title', '');
$('#notatooltip').html(theTitle);
$.data(this, 'title', theTitle);
});
container.on('mouseleave', 'a', function() {
$('#notatooltip').html('');
var $this = $(this);
var storedTitle = $.data(this, 'title');
$this.attr('title', storedTitle);
});
我不現實的標記(只是在這個例子中)在這裏:
<div class="section">
<a href="#" title="foo">Hover this foo!</a>
<div id="notatooltip"></div>
</div>
而小提琴是在這裏:http://jsfiddle.net/GVDqn/ 還是有一些理智檢查:http://jsfiddle.net/GVDqn/1/
有可能是一個更優化的方法來做到這一點(我真的沒有研究,如果你可以綁定兩個單獨的功能爲兩個單獨的事件與一個選擇器),但它會做的伎倆。
您不應該基於DOM更改重新綁定,委派的偵聽器會自動處理它。而且您應該可以通過防止默認的工具提示功能來防止它。
可能重複【如何當DOM已被更改標識?](http://stackoverflow.com/questions/3744706/how-to-identify-when-the -dom-has-been-changed) – 2012-02-28 19:53:30
好像試圖聽DOM中的每一個變化......並且每次搜索你的元素都會非常昂貴。 – charlietfl 2012-02-28 19:58:46
可能的重複[是否有一個jQuery DOM更改偵聽器?](http://stackoverflow.com/questions/2844565/is-there-a-jquery-dom-change-listener) – APerson 2015-02-17 19:55:43