2011-01-18 3 views
3

Реальный простой вопрос здесь - как я добавить .hoverIntent plugin от Brian Чернэ на следующий код вместо .live("hover", functionДобавление «hoverIntent» в .live функции

 $(".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'); 
      });   

     });   

    }); 
+5

hernan on github разветвил его и добавил поддержку плагина, чтобы он привязывался к живому событию без изменения какого-либо кода. https://github.com/hernan/hoverIntent commit - https://github.com/hernan/hoverIntent/commit/c35a71a92278792d70845c711c41c5b9e909b848 – jBeas

ответ

2
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) 
+0

Нет костей :(Вот код в прямом эфире: http://jsfiddle.net/kTFvj/3/ – Brian

+0

Я собираюсь проверить это через 5 минут;) Я дам вам знать – stecb

+0

Где находится hoverintent lib? Кроме того, код неправильный. Вы должны установить '$ (". Highlight"). HoverIntent (config);' вместо «$ («. highlight »). live (« mouseout », function() {... ' – stecb

4

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

$(".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'); 
    } 
}); 

Source

+1

Thats действительно уродливый метод обработки этого. Не скажу, что это не сработает ... но это заставляет меня хотеть плакать. :) – gnarf

+0

Не работает :(Вот ваш код, подключенный к источнику: http://jsfiddle.net/kTFvj/4/ – Brian

5

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

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

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

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

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

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

+0

++++ Вы не поверите, сколько сообщений мне пришлось читать/перед тем, как найти свой совершенно потрясающий ответ. Спасибо! –

+0

Рад, что это помогло вам от Матфея! –

Смежные вопросы