Задать вопрос
Ответы пользователя по тегу JavaScript
  • Как сделать эффект при наведении?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    $(document).ready(function(){
    	$(".oo").hide();
    	$(".go").hide();
    		$(".colp a").mouseenter(function(){
    			$(this).find(".oo").show();
    			$(this).find(".go").show();
    		});
    		$('.colp a').mouseleave(function(){
    			$(this).find("oo").hide();
    			$(this).find("go").hide();
    		});
    });
    Ответ написан
    Комментировать
  • Как добиться от Javascript более строгого режима?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Научиться писать нормально, все перечисленные варианты абсолютно верны с точки зрения javascript и могут использоваться
    this.value===value; - вполне себе нормальное выражение, у него даже результат есть - true или false, понятно, что в таком использовании оно нагрузки не несет

    someObject[undefined]=value; - хотя это и очевидный говнокод, но тем не менее String(undefined) === 'undefined'

    let x=1/0; - x будет равно Infinity
    Ответ написан
    3 комментария
  • Как вызвать функции имя которых сохранены в переменной?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    А что мешает передать сами функции? Тут проблем с вызовом уже нет никаких
    Ответ написан
    Комментировать
  • Как реализовать меню на js?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Написал для Вас плагин, разбирайтесь, пользуйтесь:
    ;(function(fab) {
    	//UMD definition
    	if(define && define.amd) {
    		//for AMD
    		define(['jquery'], fab);
    	} else if(module && module.exports && require) {
    		//for CommonJS
    		module.exports = fab(require('jquery'));
    	} else {
    		//no module system
    		fab(jQuery);
    	}
    }(function($) {
    	$.fn.menuAccordionCookie = function(cookieName) {
    		//jQuery может найти по селектору несколько элементов, применяем ко всем
    		$(this).each(function() {
    			var $ul = $(this); //самый верхний ul
    			var cookie = JSON.parse($.cookie(cookieName) || '{}'); //получаем куку и парсим
    			//это хелпер для сохранения куки
    			function saveCookie(id, value) {
    				if(value) {
    					cookie[id] = 1;
    				} else {
    					delete cookie[id];
    				}
    				$.cookie(cookieName, JSON.stringify(cookie));
    			}
    			//получаем все <li> которые являются прямыми потомками нашего <ul> и перебираем их
    			$ul.children('li').each(function(id) {
    				var $li = $(this);
    				var $childUl = $li.children('ul'); //Дочерний <ul>
    				var $a = $li.children('a'); // <a>
    				if(!$childUl.length) {
    					//если в li нет ul то ничего с ним не делаем
    					return;
    				}
    				if(!cookie[id]) {
    					//Прячем все для кого не запомнено, что они показаны
    					$childUl.hide();
    				}
    				//click по ссылке
    				$a.on('click', function() {
    					if(cookie[id]) {
    						saveCookie(id, false);
    						$childUl.hide();
    					} else {
    						saveCookie(id, true);
    						$childUl.show();
    					}
    				});
    			});
    		});
    	};
    }));

    Использование:
    $(function() {
        $('.menu-header').menuAccordionCookie('my_accorion_menu');
    });
    Ответ написан
  • Как использовать контекст в JavaScript?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    С точки зрения производительности все 3 примера одинаковы.
    А вот данные в глобале это очень плохо для отладки и поддержки кода. по крайней мере, когда они уж так необходимы, нужно везде в коде указывать их через глобальный объект (в браузере это windows), т.е. window.App js то оно пофигу, хотя и тут есть исключение, а вот программистам нет.
    Ответ написан
    Комментировать
  • Как поставить скрипт на автовключение сервера cs?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    установите forever или pm2 из npm
    напишите init.d скрипт который будет дергать forever/pm2 на обращение к сервису
    Ответ написан
    Комментировать
  • Как сделать красивую ссылку в spa приложении?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Если пользователь что-то вводит непосредственно в адресную строку браузера, то отловить это не получится не как, т.к. адресная строка - это не элемент вашей страницы.
    Если же пользователь просто кликает по ссылке на вашей странице, то вы можете перехватить это по событию click ссылки и запилить там любую логику, только надо будет еще запретить всплытие события, дабы это же событие click не обработал сам браузер
    Ответ написан
    1 комментарий
  • Как реализовать бесконечный список?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Во-первых, реализация тут будет несколько отличаться в зависимости от верстки, а конкретно, если наш внешний блок имеет position == absolute || relative || fixed то задаем нашему листу position: absolute и работаем с его свойством top, в ином случае придется работать с свойством margin-top, что медленнее в отрисовке.

    Собственно по реализации:
    я допущу, что у Вас уже сохранен jQuery объект списка в переменной $list, что работаем мы все таки со свойством top и у Вас уже где-то есть таймер в котором это свойство top уменьшается, вот туда нужно будет добавить следующий код:
    var $li = $list.find('li:eq(0)');
    var h = $li.height();
    var top = +$list.css('top');
    if(top < -2 * h) { //если список поднялся больше чем на 2 высоты 1 элемента
        $li.remove().appendTo($list); //перемещаем элемент в конец списка
        $list.css('top', (top + h) + 'px'); //опускаем список на высоту элемента,
                             //так как мы его убрали вначале
    }
    Ответ написан
    8 комментариев