namez, да, у меня во втором варианте ошибка: $('#'+id) -> $('#'+id)[0]
но ты разберись, как оно раотает, а то мало ли чего я тебе тут насоветовал ;-) |
исправил но работает с глюками ведь все равно..
теперь зацикливания нету но остается fadeIn... да и как без id к картинке обойтись - а если например там в li будет span c бекграундом? то есть конструкция вида <li><a href><span></span></a> пытаюсь разобраться но пока глюк что-то на глюке у решения зацикливания 8( |
да, не учел еще один нюанс
function onMouseEnterLeave( e ) { var to = { mouseenter: 0.1, mouseleave: 1 }; if( $.data(this, 'isRunning') ) { $.data( this, 'last', e.type ); return; } $.data( this, 'isRunning', true ); $.data( this, 'last', null ); var id = this.id; var type = e.type; $(this).fadeTo(500, to[ e.type ], function() { var last = $.data($('#'+id)[0], 'last'); if( last && (type != last) ) setTimeout( function() { $('#'+id).trigger( last ); }, 0 ); $.data( $('#'+id)[0], 'isRunning', false ); }); } $("a img").bind("mouseenter", onMouseEnterLeave); $("a img").bind("mouseleave", onMouseEnterLeave); но стоит задуматься, а надо ли это вообще |
Цитата:
|
да x-yuri теперь все вроде ок! спасибо бальшое =)
насчет задуматься если правильно понял вас: вот реализация на mootools http://mmns.ru/files/moo/ cкажите почему такая разница в кол-ве кода? спасибо за помощь, с уважением Cергей. |
можно еще так (без id, заметь)
function onMouseEnterLeave( e ) { var to = { mouseenter: 0.1, mouseleave: 1 }; if( $.data(this, 'isRunning') ) { $.data( this, 'last', e.type ); return; } $.data( this, 'isRunning', true ); $.data( this, 'last', null ); var type = e.type; $(this).fadeTo(500, to[ e.type ], function() { var last = $.data( this, 'last'); if( last && (type != last) ) { var img = this; setTimeout( function() { $(img).trigger( last ); }, 0 ); } $.data( this, 'isRunning', false ); }); } а можно так $("a img").bind("mouseenter", function() { $(this).stop().fadeTo(500, 0.1); }); $("a img").bind("mouseleave", function() { $(this).stop().fadeTo(500, 1); }); или аналог mootools-варианта $("a img").bind("mouseenter", function() { $(this).stop().fadeTo(0, 1).fadeTo(500, 0.1); }); $("a img").bind("mouseleave", function() { $(this).stop().fadeTo(0, 0.1).fadeTo(500, 1); }); и собственно вопрос: "почему такая разница в количестве кода?" Но в любом случае сравнивать фреймворки надо не по количеству кода одной задачи Под задуматься я подразумевал, что именно надо: 1) анимации выполняются все и до конца, 2) пропускаются промежуточные анимации, 3) очередное событие прерывает текущую анимацию, 4) очередное событие прерывает текущую анимацию и начинает новую с ее "начала" (mootools-вариант) |
Часовой пояс GMT +3, время: 19:02. |