→

JavaScript программирование →  Симуляция задержки между fade in/out эффектами в JQuery

Jquery хорош тем, что позволяет пименять так называемые «цепочные решения».

Решение в лоб:

$("#foo").show().hide();


Показывает и скрывает элемент с id=«foo».

Fade-in-fade-out


Если нужно красиво показать блок и так же красиво его скрыть, используем fade-in-fade-out эффект:

$(document).ready(function() {
        $("#foo").fadeIn(2000).fadeOut(2000);
});


В течении 2 секунд (2000 мс) блок будет проявляться, потом в течении 2 секунд блок будет скрываться. Если нам необходимо установить задержку между fadeIn и fadeOut, тогда делаем так:

$(document).ready(function() {
        $("#foo").fadeIn(2000).delay(5000).fadeOut(2000);
});


Установлена задержка в 5 секунд.

Фокусы с задержкой без delay


Для проявления полупрозрачности (50% — второй параметр) с задержкой в 3 секунды можно воспользоваться следующим кодом:

$("#foo").fadeTo(3000, 0.5);


Рассмотрим пример задержки:
1. Проявить элемент в течении двух секунд (прозрачность от 0 до 1)
2. Задержать прозрачность на уровне 1 в течении 5 секунд
3. Прятать блок в течении 2 секунд (прозрачность с 1 до 0)

Решение:
$(document).ready(function() {
        $("#foo").fadeIn(2000).fadeTo(5000, 1).fadeOut(2000);
});


Задержка перед стартом


$(document).ready(function() {
        $("#foo").fadeTo(3000, 0).fadeIn(2000)
        .fadeTo(5000, 1).fadeOut(2000);
});
1

JavaScript программирование →  Изменение размера шрифта в теле HTML документа

Иногда приходится выполнять достаточно непонятные задания заказчика или описанные в ТЗ. Одним из маразмов является онлайн изменение размера шрифта тела HTML. Зачем это надо я не знаю. Наверно, просто эффектная, никому ненужная фишка.
Сделаем это при помощи яваскриптового фреймворка JQuery и ихнего же UI, что бы было красивее:)

Итак, имеем три кнопки:


<div id="cahnge-font-size">
        <input class="ui-state-default ui-corner-all" id="decreaseFont" type="button" name="#" value="Меньше">
        <input class="ui-state-default ui-corner-all" id="resetFont" type="button" name="#" value="Нормально">
        <input class="ui-state-default ui-corner-all" id="increaseFont" type="button" name="#" value="Больше">
</div>
 


Яваскрипт будет выглядеть так:


<script type="text/javascript">
$(document).ready(function(){
        //      Reset Font Size
        var originalFontSize = $('html').css('font-size');
        $("#resetFont").click(function(){
                $('html').css('font-size', originalFontSize);
        });
        //      Increase Font Size
        $("#increaseFont").click(function(){
                var currentFontSize = $('html').css('font-size');
                var currentFontSizeNum = parseFloat(currentFontSize, 10);
                var newFontSize = currentFontSizeNum*1.2;
                $('html').css('font-size', newFontSize);
                return false;
        });
        //      Decrease Font Size
        $("#decreaseFont").click(function(){
                var currentFontSize = $('html').css('font-size');
                var currentFontSizeNum = parseFloat(currentFontSize, 10);
                var newFontSize = currentFontSizeNum*0.8;
                $('html').css('font-size', newFontSize);
                return false;
        });
});
</script>
 
0

Фреймворки →  Проблемы отображения Datepicker в Dialog (JQuery фреймворк)

Наверно, это баг:) Когда вызываешь диалоговое окно (в моем случае оно было модальным) и в нем пытаешься вызвать Datepicker(календарик для выбора даты), то календарик оказывается под диалоговым окном. Естественно, пользоваться таким календариком не очень удобно:)

Первое, что пришло в голову — z-index. Оно и естественно, как фиксить?

Из того, что нашел — все сводилось к допиливанию кода именно JQuery, я противник такого варварства, т.к. не известно, где это может всплыть (это же говно:)).

Сделал так:

$(function() {
        $("#date_publish").datepicker();//собственно вызов нашего календаря
        $("#ui-datepicker-div").css("z-index", 1000000); //задаем z-index
});
0

Фреймворки →  плагин Star Rating для JQuery

Есть такой интересный плуг для организации оценок всего чего угодно в один клик под яваскриптовый фреймворк JQuery.

Здесь можно скачать и посмотреть на него.
http://plugins.jquery.com/project/MultipleFriendlyStarRating

http://www.fyneworks.com/jquery/star-rating/

Проблема с которой я столкнулся — невозможность задизейблить звезды после того, как пользователь проголосовал. Как минимум это приводит к заблуждению пользователя.

Решение:


$('.auto-submit-star').rating({
                callback: function(value, link){
                        // 'this' is the hidden form element holding the current value
                        // 'value' is the value selected
                        // 'element' points to the link element that received the click.
                        $("#form-rating").ajaxSubmit({
                                success:function(data) {
                                        //именно здесь начинаем дизейблить звезды
                                        $("div", "#form-rating")
                                        .removeClass("star_live")
                                        .addClass("star_readonly")
                                        .unbind("mouseover")
                                        .unbind("mouseout")
                                        .unbind("click");
                                        //здесь закончили
                                        $('#message').text("Your vote was counted");
                                },
                                error:function(data) {
                                        form.fadeOut("slow");
                                        $('#message').text("Error!");
                                }
                        });
                }
        });
 
1

JavaScript программирование →  Просмотреть свойства объекта

Очень полезно при дебаге:

<SCRIPT LANGUAGE="JavaScript">
<!--
function getObjectProperties (object) {
 var result = '';
 for (var property in object) {
  result += property + ': ' + object[property] + '\r\n';
 }
 return result;
}
alert(getObjectProperties(document.body));//передаем объект, в данном случае тело документа, вывод уже на усмотрение программиста, естественно:)
//-->
</SCRIPT>
 
0
←  сюда    туда  →
1 2