2015-05-04 79 views
0

我絕對必須適應這種單排用舊的jQuery 1.51如何將jquery.on恢復到jquery.bind?

this.on({'mouseenter.hoverIntent':handleHover,'mouseleave.hoverIntent':handleHover}, cfg.selector) 

我不能站下的語法運行。我知道,內圈括號內的部分是事件,但這是什麼意思?

'mouseenter.hoverIntent':handleHover 

和這個?

'mouseleave.hoverIntent':handleHover  

的代碼是從here

我這樣做是因爲下行移植。對只提供1.7以來所採取的腳本的最後一行,我使用的是1.5.1,我做不到升級,絕對可悲的事情。

adminbar.find( 'li.menupop')hoverIntent({ 過來:功能(E){ 如果(disableHoverIntent) 回報;

  $(this).addClass('hover'); 
     }, 
     out: function(e){ 
      if (disableHoverIntent) 
       return; 

      $(this).removeClass('hover'); 
     }, 
     timeout: 180, 
     sensitivity: 7, 
     interval: 100 
    }); 

我只是試圖簡單地用

取代。
return this.bind({'mouseenter.hoverIntent':handleHover,'mouseleave.hoverIntent':handleHover}, cfg.selector); 

我沒有錯誤了,但是,簡單地說,它不工作,鼠標懸停菜單開口不再觸發

**這個代碼是如何使用的? **

adminbar.find('li.menupop').hoverIntent({ 
     over: function(e){ 
      if (disableHoverIntent) 
       return; 

      $(this).addClass('hover'); 
     }, 
     out: function(e){ 
      if (disableHoverIntent) 
       return; 

      $(this).removeClass('hover'); 
     }, 
     timeout: 180, 
     sensitivity: 7, 
     interval: 100 
    }); 

重要注意事項2

一味以cfg.selector給出undefined。所以我實際上不知道如何正確地將這個擴展轉儲到選定的元素。

+0

更好,如果你http://jsfiddle.net/你的代碼 –

+2

只需在插件中用'bind/unbind'替換'on/off'的任何引用:http://jsfiddle.net/h29oh09t/ –

+0

對不起,我我並沒有試圖簡單地替換,因爲我在理解 – realtebo

回答

4

編輯,更新

以下,並利用由@提供的jsfiddle http://jsfiddle.net/h29oh09t/1/一個 - 沃爾夫,在

(function ($) { 
    $.fn.hoverIntent = function (handlerIn, handlerOut, selector, cfg) { 

     // default configuration values 
     var cfg = cfg || { 
      interval: 100, 
      sensitivity: 6, 
      timeout: 0 
     }; 

最低限度修飾嘗試

var adminbar = $("ul"); 

var disableHoverIntent = false; 

adminbar.find('li.menupop').hoverIntent({ 
    over: function (e) { 
     if (disableHoverIntent) return; 

     $(this).addClass('hover'); 
    }, 
    out: function (e) { 
     if (disableHoverIntent) return; 

     $(this).removeClass('hover'); 
    } 
}, null, {timeout: 180, 
     sensitivity: 7, 
     interval: 100}); 

但什麼呢意思是這個?

'mouseenter.hoverIntent':handleHover

mouseenter.hoverIntent

.hoverIntent部分似乎是一個namespace

參見.on() - Event names and namespaces

+0

我知道基本的命名空間的用法,但''handleHover',它的作用是什麼? – realtebo

+1

@realtebo處理程序部分;或函數調用mouseenter.hoverIntent事件。請參閱_「示例:使用普通對象同時附加多個事件處理程序。」_ http://api.jquery.com/on/#example-8 – guest271314

0

更換on()bind()應該做你所需要的jQuery 1.5。傳入的對象由表示事件類型的鍵組成,該對象的值表示事件處理程序。所以在你的情況下,'mouseenter.hoverIntent':handleHover,事件類型是mouseenter.hoverIntent這是一個自定義事件,在代碼中的其他地方觸發。一旦該事件被觸發,handleHover函數被調用。

+0

請參閱我編輯的問題,只需更換不會導致錯誤但不起作用! – realtebo

+1

可能是因爲您有最後一個參數的選擇器'cfg.selector'。 jQuery 1.5期望最後一個參數是你的處理程序,而不是選擇器。您可以去修改處理程序以選擇'cfg.selector'選擇的元素,或者您可以嘗試直接綁定到'cfg.selector'。這實際上取決於代碼的其餘部分在做什麼。 – arjabbar

+0

是的,cfg.selector是'未定義'。我編輯了我的問題,以添加調用實際使用此擴展的方式。如何替換cfg.selector? – realtebo