2014-11-13 58 views
0

我正在使用jquery醉人的工具提示來顯示其他信息。 我現在使我的網站響應,所以我添加了一個resize事件監聽器,並根據頁面的大小顯示更多或更少的元素。因此我必須重新應用令人興奮的工具提示。例如,我現在可能會有一些新的元素,它們還沒有喝醉。如何將jquery醉酒重新應用到現有元素

不幸的是,在每次重新申請後,我並沒有更換已有的tipsys,而是添加了另外一個。

請看jsfiddle的效果。調整html結果窗格的大小後,當顯示工具提示時,您可以在JavaScript控制檯中看到多個回調。

http://jsfiddle.net/7mbbcmvz/1/

HTML代碼:

<body> 
    <a href="xy">xxx</a> 
</body> 

JavaScript代碼:

var i = 0; 

function addTipsy(event) { 
    $('a').tipsy({ 
     title: function() { 
      i = i + 1; 
      console.log('mouseenter ' + i); 
      return 'test'; 
     } 
    }); 
}; 

addTipsy(); 

window.addEventListener('resize', addTipsy); 
+0

問題是什麼然後?我不明白。 – tmarwen

+0

嘗試在調用addTipsy()之前刪除以前的處理程序。 查看http://stackoverflow.com/questions/3449321/jquery-how-to-remove-the-tipsy-tooltip – sb9

+0

問題不在於顯示的醉意,處理程序多次註冊。試試jsfiddle並打開javascript控制檯。調整窗口大小後,您將獲得單個顯示的工具提示的多個事件。 – Fabian

回答

0

解除綁定mouseentermouseleave重新申請酒意處理程序之前似乎工作:

var i=0; 

function addTipsy(event) { 
    $("a").unbind('mouseenter mouseleave'); 
    $('a').tipsy({ 
     title: function() { 
      i = i + 1; 
      console.log('mouseenter ' + i); 
      return 'test'; 
     } 
    }); 
}; 

addTipsy(); 

window.addEventListener('resize', addTipsy); 

另一種方法是記住那些元素,已經有醉意處理器中加入一個類,並酒意處理程序僅添加到那些不具備該類這些元素:

function addTipsy(event) { 
    $('a').not(".tipsyApplied").addClass("tipsyApplied").tipsy({ 
     title: function() { 
      i = i + 1; 
      console.log('mouseenter ' + i); 
      return 'test'; 
     } 
    }); 
}; 
+0

非常感謝這個工程,我不確定它是否是一個很好的解決方案,酒醉應該處理這個imho,但是我很高興到目前爲止! – Fabian

相關問題