2012-03-07 4 views
0

Это, вероятно, легко для кого-то. Я бы хотел, чтобы этот код плагина загорелся, когда мышь перемещается по элементу, вибрируя элемент 3 или 4 раза (или независимо от того, что указано), а затем остановитесь. Однако он просто продолжает стрелятьMouseenter держит стрельбу из-за плагина Wiggle

вот скрипка: http://jsfiddle.net/ZKVMk/7/

Я использую этот маленькое покачивание плагин: http://labs.wondergroup.com/demos/mini-ui/index.html

Кажется, что плагин просто делает MouseEnter оставаться активными.

идеи:

  • как-то переместить вызов функции покачивания вне MouseEnter так это только стреляет один раз?

  • использовать функцию обратного вызова плагина, чтобы сообщить мышиному компьютеру, что он должен остановиться?

  • включить bind() или unbind() как-то?

большое спасибо!

+0

В Chrome, ваша скрипка, кажется, работает правильно для меня, но FF и IE8 идут немного орехи. –

+0

Это не событие. Это эффект плагинов. – Starx

ответ

0

Проблема заключается в том, что при перемещении элемента он повторно запускает событие MouseEnter в Firefox и IE, поэтому самый простой способ исправить это (ИМХО, конечно) состоит в том, чтобы просто вставить переменную, которая может быть сброшена, что предотвращает многократный вызов метода wiggle.

$(function() { 
    var wiggled = false; 

    $('#tata').mouseover(function() { 
     if(!wiggled) { 
      $(this).wiggle({ 
       speed: 60, 
       wiggles: 3, 
       travel: 5, 
      }); 
      //output 
      var el = $('#output'); 
      var n = + el.text(); 
      el.text(++n); 

      wiggled = true; 
     } 
    }).mouseout(function(e) {   
     wiggled = false; 
    }); 
}); 

Update: Я хотел бы добавить, что я только был в состоянии проверить это в FF, IE и Chrome могут вести себя по-разному, но я бы не предположить.

+0

это прекрасная вещь. прекрасно работает. также проверены на сафари. небольшая логика проходит долгий путь. вот заключительная скрипка http://jsfiddle.net/ZKVMk/17/ – lyndonr

0

попробуйте ввести это, а

$('#tata').mouseout(function() {   
    $(this).stop(); 
}); 

Это остановит все анимации, позволяя в настоящее время анимации закончить

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

  • Нет связанных вопросов^_^