Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Еще элегантнее (https://javascript.ru/forum/jquery/19075-eshhe-ehlegantnee.html)

Armen 25.07.2011 16:25

Еще элегантнее
 
Код хтмл
<div id="header-r1">
        <div id="left-r1">
            <h1 id="title-r1">This course contains<br /> the following topics:</h1>
            <hr id="line-r1" />
            <div id="allList-r1">
            	<div id="playDiv-r1">
                	<span id="playSpan-r1"></span>
                </div>
                <ul id="lists-r1">
                    <li class="list-r1">Alcohol And Drugs</li>
                    <li class="list-r1">Becoming Familiar With Your Vehicle</li>
                    <li class="list-r1">Defensive Driving Techniques</li>
                    <li class="list-r1">Driving In Bad Weather</li>
                    <li class="list-r1">Driving Privileges</li>
                    <li class="list-r1">Laws And Rules Of The Road</li>
                    <li class="list-r1">Road Rage</li>
                    <li class="list-r1">Seat Belts</li>
                    <li class="list-r1">Sharing The Road</li>
                    <li class="list-r1">Signs, Signals, and Markings</li>
                    <li class="list-r1">Space Management</li>                
                </ul>
			</div> <!-- end #allList-r1 -->               
        </div> <!-- end #left-r1 -->
        <div id="right-r1">
            <img src="images/img.jpg" height="400" width="540" />
        </div> <!-- end right-r1-->
    </div> <!-- end #header-r1 -->

Код js
jQuery(function()
{
	$.pushCoords = function ()
	{		
		var timeDelay = 800;
		var timeSpeed = 1500;
		var timeOpacity = 200;
		
		var arrCoords = [];
		
		$('.list-r1').each(function()
		{
			var obj = $(this).position();
			var msg = obj.top;			
			arrCoords.push(msg);
		})
		
		$.each(arrCoords, function()
		{
			var coord = this;
			var paddingLi = $(".list-r1").css("padding-top");
			var paddingPlay = $('#playDiv-r1').css({top: paddingLi})
			
			$('#playDiv-r1').animate({top: coord}, timeSpeed).delay(timeDelay);		
			//alert(coord);			
		})	
		$('#playDiv-r1').animate({opacity: "0"}, timeOpacity);
	}
	$.pushCoords()		
});

Можно ли данное решение сделать еще ЭЛЕГАНТНЕЕ(как любят выражаться программисты) ?
Подскажите пожалуйста, как и почему
Спасибо

melky 25.07.2011 16:35

убери jquery

вуаля!

kobezzza 25.07.2011 16:37

Цитата:

Сообщение от melky (Сообщение 115318)
убери jquery

вуаля!

:D

Armen 25.07.2011 16:39

И все ? :)

melky 25.07.2011 16:53

да

:)

Armen 25.07.2011 16:54

Цитата:

Сообщение от melky (Сообщение 115323)
да

:)

Вы имеете в виду, в начале , строку jQuery(function() поменять на $(function() ,я правильно вас понял ?

melky 25.07.2011 16:57

нет

написать без использования jquery.

Riim 25.07.2011 16:57

Цитата:

Сообщение от Armen
я правильно вас понял ?

нет, нужно совсем без jquery.

Armen 25.07.2011 17:03

В том, то и дело, что нужно с jQuery

melky 25.07.2011 17:15

не нужно ... это как с эвалем.. ( без него можно обойтись в 99% случаев )

Armen 25.07.2011 17:26

Цитата:

Сообщение от melky (Сообщение 115332)
не нужно ... это как с эвалем.. ( без него можно обойтись в 99% случаев )

Заказчик сказал, что реализовать нужо на jQuery

Kolyaj 25.07.2011 17:34

Цитата:

Сообщение от melky
это как с эвалем.. ( без него можно обойтись в 99% случаев )

Без eval можно обойтись в 100% случаев.

Armen 25.07.2011 17:36

Цитата:

Сообщение от Kolyaj (Сообщение 115339)
Без eval можно обойтись в 100% случаев.

+1 в карму!

melky 25.07.2011 17:51

Цитата:

Сообщение от Kolyaj (Сообщение 115339)
Без eval можно обойтись в 100% случаев.

теперь да.

раньше можно было изменить переменную в замыкании.

Kolyaj 25.07.2011 17:56

Не понял, почему раньше нельзя было обойтись без eval и что изменилось.

melky 25.07.2011 18:14

брось, ты же отлично меня понял. немного абстрактный пример
(function(){

            var a = "inner";
            window.b = function(){ return a };
})()

b() // inner

eval( "var a = 'outer'; ", closure_scope... );

b() //outer;

Kolyaj 25.07.2011 18:16

Нет, не понял. И примера не понял. Я понимаю, что иногда не обойтись без кодогенерации, но тут лучше использовать new Function. А зачем нужны игры с замыканиями я не понимаю.

melky 25.07.2011 18:17

хм. ну.. я ничего не говорил про "полезность" :).


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