Добавление "hoverIntent" в функцию .live - PullRequest
4 голосов
/ 18 января 2011

Очень простой вопрос - как мне добавить плагин .hoverIntent от Брайана Черна к следующему коду вместо .live("hover", function

        $(".highlight").live("hover", function(){
            $(this).animate({"width": "454px", "height":"282px", "top: ":"94px", "left":"152px", "margin-top: ":"-94px", "margin-left":"-152px"}, 500);       

        });   

Вот полный код:

    $(document).ready(function(){         

        $('#sliding_grid li').hover(function() {
          $(this).css('z-index',1).data('origTop',$(this).css('top')).data('origLeft',$(this).css('left')).addClass('highlight');

        }, function() {
          $(this).css('z-index', 0);
        });

        $(".highlight").live("hover", function(){
            $(this).animate({"width": "454px", "height":"282px", "top: ":"94px", "left":"152px", "margin-top: ":"0", "margin-left":"0"}, 500);       

        });   

        $(".highlight").live("mouseout", function(){
            $(this).animate({"width": "148px", "height":"90px", "top: ":$(this).data('origTop'), "left":$(this).data('origLeft'), "margin-top: ":"0", "margin-left":"0"}, 500, function(){
             $(this).removeClass('highlight');   
            });        

        });        

    });

Ответы [ 3 ]

5 голосов
/ 09 мая 2013

На данный момент текущей версией плагина является «r7», который можно найти здесь:

http://cherne.net/brian/resources/jquery.hoverIntent.r7.js

С версией «r7» вы можете передать селекторв качестве третьего параметра.Это похоже на событие делегата в jQuery.При добавлении hoverIntent в список динамических элементов свяжите событие hoverIntent с родительским элементом и используйте третий параметр, чтобы добавить селектор элемента, для которого вы хотите использовать hoverIntent.

Например, если у вас естьсписок <li> элементов, которые будут изменяться, и вы хотите, чтобы hoverIntent запускался на каждом <li>, тогда вы можете сделать следующее:

$("ul").hoverIntent(overFunction, outFunction, "li");

Это очень просто, поэтому вы захотите обновить2 селектора в соответствии с вашими настройками.

4 голосов
/ 18 января 2011

Попробуйте заменить этот код:

$(".highlight").live("hover", function(){
    $(this).animate({"width": "454px", "height":"282px", "top: ":"94px", "left":"152px", "margin-top: ":"0", "margin-left":"0"}, 500);       

});   

На это:

$('.highlight').live('mouseover', function() {  
  if (!$(this).data('init')) {  
    $(this).data('init', true);  
    $(this).hoverIntent(function(){  
      $(this).animate({"width": "454px", "height":"282px", "top: ":"94px", "left":"152px", "margin-top: ":"0", "margin-left":"0"}, 500);
    },  
    function(){  
      /* mouseout logic */  
    });  
    $(this).trigger('mouseover');  
  }  
});

Источник

2 голосов
/ 18 января 2011
function animateFn(){
     $(this).animate({"width": "454px", "height":"282px", "top: ":"94px", "left":"152px", "margin-top: ":"-94px", "margin-left":"-152px"},200);
}

function reseteFn(){ 
    $(this).animate({"width": "148px", "height":"90px", "top: ":$(this).data('origTop'), "left":$(this).data('origLeft'), "margin-top: ":"0", "margin-left":"0"}, 500, function(){
         $(this).removeClass('highlight');   
    });
}

var config = {    
     over: animateFn, // function = onMouseOver callback (REQUIRED)    
     timeout: 200, // number = milliseconds delay before onMouseOut    
     out: reseteFn // function = onMouseOut callback (REQUIRED)    
};

$(".highlight").hoverIntent(config)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...