Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Увеличение картинок при наведение (https://javascript.ru/forum/jquery/31292-uvelichenie-kartinok-pri-navedenie.html)

More916 01.09.2012 21:35

Увеличение картинок при наведение
 
Я уже создавал тему с этим скриптом, но теперь я его доработал/развил(в меру моего малого опыта это и так можно назвать:) )
Собственно вот в чем проблема: скрипт я писал в jsFiddle, и там все работает, но когда и копирую весь код на хостинг или на компьютер, то он не работает, причем вообще javascript отказывается работать(хотя и библиотеку jQuery я везде подключал одинаковой версии)
Вот часть html кода:
<div id="wrapper"><div id="menu">
<img src="buttA1.png" class="zoom" alt="" />
<img src="buttB1.png" class="zoom" alt="" />
<img src="buttC1.png" class="zoom" alt="" />
<img src="buttD1.png" class="zoom" alt="" />
<img src="buttE1.png" class="zoom" alt="" />
</div></div>


Вот сам скрипт:
// Самое важное, это первая часть, отвечающая за расчет длины блока и его позиционирование по центру в зависимости от общего размера всех картинок, она и является моей доработкой
var menulen = 0;
$("#menu").children('img').each(function(indx, element){menulen +=  $(element).outerWidth(true);});
$("#menu").css({"margin-right":function(i,val){val = (menulen/2)*(-1); return val;}, "margin-top":"0"});
$("#menu").children('img').last().prevAll()
               .css("margin-right", function(i,val){
                        var lenth = $(this).width();
                        val = Math.round((200 -lenth)/2);
                        return val;});

//далее вторая часть, отвечающая за само изменение размеров картинок, ранее была только она, и она работала...

$(function(){
    $('.zoom').hover(function(){
            var name = $(this).attr("src");    
            $(this).stop().animate({width:"200px",height:"200px",left:"-40px",top:"-40px"}, 400);
            name = name.replace(/1/g, "2");
            $(this).attr("src",name);
        },
        function(){        
            var name = $(this).attr("src");    
            $(this).stop().animate({width:"100px",height:"100px",left:"0",top:"0"}, 400);
            name = name.replace(/2/g, "1");
            $(this).attr("src",name);
        });
});

Aetae 01.09.2012 21:49

$(function(){
var menulen = 0;
$("#menu").children('img').each(function(indx, element){menulen +=  $(element).outerWidth(true);});
$("#menu").css({"margin-right":function(i,val){val = (menulen/2)*(-1); return val;}, "margin-top":"0"});
$("#menu").children('img').last().prevAll()
               .css("margin-right", function(i,val){
                        var lenth = $(this).width();
                        val = Math.round((200 -lenth)/2);
                        return val;});
    $('.zoom').hover(function(){
            var name = $(this).attr("src");    
            $(this).stop().animate({width:"200px",height:"200px",left:"-40px",top:"-40px"}, 400);
            name = name.replace(/1/g, "2");
            $(this).attr("src",name);
        },
        function(){        
            var name = $(this).attr("src");    
            $(this).stop().animate({width:"100px",height:"100px",left:"0",top:"0"}, 400);
            name = name.replace(/2/g, "1");
            $(this).attr("src",name);
        });
});

Скорее всего.

More916 01.09.2012 22:46

Спасибо, вроде заработало.
Но! теперь появился вопрос по второй части скрипта:
$(function(){
	    $('.zoom').hover(function(){
	            var name = $(this).attr("src");   
	            $(this).stop().animate({width:"200px",height:"200px",left:"-40px",top:"-40px"}, 400);
	            name = name.replace(/1/g, "2");
	            $(this).attr("src",name);
	        },
	        function(){       
	            var name = $(this).attr("src");   
	            $(this).stop().animate({width:"100px",height:"100px",left:"0",top:"0"}, 400);
	            name = name.replace(/2/g, "1");
	            $(this).attr("src",name);
	        });
	});


Если спокойно наводить курсор и отводить только по одной картинки, то все нормально меняет размеры, а вот если провести по всем картинкам сразу, то они начинают "подвисать", значение их размеров зависает на промежуточных значениях...
Может все дело в stop() и я его как то неправильно применяю?

Deff 01.09.2012 23:01

More916,
Попробуйте так:
$(function(){
	    $('.zoom:not(.active)').live('mouseenter',function(){
	            $(this).addClass('active');
	            var name = $(this).attr("src");   
	            $(this).stop().animate({width:"200px",height:"200px",left:"-40px",top:"-40px"}, 400);
	            name = name.replace(/1/g, "2");
	            $(this).attr("src",name);
	        });
	        $('.zoom.active').live('mouseleave',function(){  
	            var name = $(this).attr("src");
	            $(this).stop().animate({width:"100px",height:"100px",left:"0",top:"0"},
	            "linear", function(){$(this).removeClass('active');}, 400);
	            name = name.replace(/2/g, "1");
	            $(this).attr("src",name);
	        });
	});

More916 02.09.2012 00:44

Не.. так еще хуже... =( вообще только в одном направлении меняются...

Deff 02.09.2012 00:51

Цитата:

Сообщение от More916
Не.. так еще хуже... =( вообще только в одном направлении меняются...

More916,
Живая ссылка есть ?

More916 02.09.2012 01:24

http://jsfiddle.net/m/dfx/
Тут самая левая картинка все время в бок уходит, это просто я не доделал, а вот почему их размеры слетают если по всем сразу поводить курсором...

Deff 02.09.2012 01:35

More916,
Чот я попадаю на ввод акка


Часовой пояс GMT +3, время: 07:00.