Ответы пользователя по тегу JavaScript
  • Как реализовать выполнение скрипта по действиям с отображением?

    @MrTimon
    Но до конца понял ваш скрипт (сильно не увлекался), но есть же setTimeout думаю это должено помочь: когда нужно добавляєтее елемент потом через setTimeout указываете ему класс и еще один setTimeout удаляете елемент.

    Не лутшее реашение как по мне, лутше можна анимацию тоже js-сом сделать и работать з калбеками.
    Ответ написан
    Комментировать
  • Как переписать эту лапшу?

    @MrTimon
    Зачем эти повторения и ф-ции не могу понять. Как по мне проще сделать так
    showButton () {
        return in_array(this.$route.name, ['new-article','update-article'] ) && this.article.section && this.article.title && this.article.description;
    }
    Ответ написан
  • Как обращаться к динамически создаваемым элементам?

    @MrTimon
    //Задаем переменную с вашим списком 
    var myUlList = $('ul#mylist');
    
    //Потом перебираем все елементы генерированого списка
    $('ul#ulGen').find('li').each(function(index,el) { 
        //Ищем елемент в вашем списке, который соответствует елементу с цикла
        var myEl = $(myUlList.find('li').get(index));
         
        // Ищем в елементе з списка инпут и выставляем ему значение с такого же инпута в вашем списке
        $(el).find('input').val(myEl.find('input').val() );
    
        // Проделываем теже операции с label и span
        $(el).find('label').html(myEl.find('label').html() );
        $(el).find('span').html(myEl.find('span').html() );
    })
    Ответ написан
    Комментировать
  • Как убрать смещение шапки при открытии модальных окон?

    @MrTimon
    Как сказал Nikita Velko там убирается скрол и ставиться паддинг, что изменяет ширину блока body, а для меню (блок с классом .menuFix) у вас стоит ширина в процентах, значит тоже изменяется. Лутшим решением будет поставить этому меню не 100% ширину а 100vw тоисть
    .menuFix {
        width: 100vw;
    }

    правда не уверен на счет кроссбраузерности
    Ответ написан
    1 комментарий
  • Не отрабатывает php при jquery?

    @MrTimon
    Судя по html выходит что $name, $lastname, и $cash у вас равны null. Может проблема в этом? неуверен переводится ли null в string, скорее всего там ошибка. Попробуйте их брать не с $__POST масива, а просто присвойте им некие значения для быстрой проверки
    Ответ написан
  • Как сделать чтобы скрипт работал для всех указанных id?

    @MrTimon
    Id на странице должно быть уникальным так как это индификатор елемента, потому jquery и возращает только первій попавшийся елемент. Добавте до елементов класс (можно и такой же как и id) и в строке
    $('#fun-level').each(function(){

    измените селектор на выбор по классу
    $('.fun-level').each(function(){
    Ответ написан
  • Как по нажатию на картинку загрузить её в file input?

    @MrTimon
    Так как вы пытаетесь реализовать нельзя. Можно сделать немножко по другому. В форме сделать hidden поле куда в результате будет прописываться путь к картинке. Теперь при клике на картинку 1 или 2 просто прописываете путь этой картинки в это hidden поле. А при нажатии на 3 картинку должно срабатывать input file click с другой формы. А на input file change ajax-ом отправлять файл на сервер в некую временную папку и после выполнения аякса, путь к этому файлу уже с сервера, втавлять в это hidden поле. Теперь при нажатии сабмита вам с хиден поля прийдет путь к выбраной картинке. Делаете с ней манипуляции и потом при небходимости удаляете с временной папки.
    Ответ написан
    2 комментария
  • Как удалить класс у элемента при отсутствии определенного дочернего элемента?

    @MrTimon
    Как вариант удалить все класы "myclass" и добавить только там где нужно самому, аля:
    <script>
      $(document).ready(function() {
          $('a.myClass').removeClass('myClass');
          $('img').parent('a').addClass('myClass');
      });
    </script>


    Можно немножко усложнить и перебирать все имиджи детально и искать парент ссылки где src имиджа равно href параметру ссылки и только им добавлять клас.

    другой способ перебрать все ссылки каторые имеют имдж как сделали вы толко надо так:
    $(document).ready(function() {
          $('a.myClass').filter(function(item) {
                return $('>img',$(item)).length == 0
          }).removeClass('myClass');
      });


    Должно работать
    Ответ написан
    5 комментариев
  • Как ограничить повторное использование функции по одному элементу?

    @MrTimon
    Во-первых эта строка просто ужасна var id_tops = '<?php echo $id;?>'; (это не ошибка но глаза режет) порекомендовал бы все переменные которые приходять с сервера назначить где-то вначале скрипта и в ф-циях использовать уже js-ые переменные. тоисть
    <script>
        var ID = parseInt('<?php echo $id;?>');
    
    
        $(document).on('click','.visualp',function(e) {
            //...
            var id_tops =ID ;
            //...
        });
    </script>


    Вот а если по вопросу то можно сделать глобальную переменную и туда сохранять айди елемента на который нажали ну или какой-то другой уникальный атрибут ну или сам елемент и в фунции проверять если атрибут совпадает тогда ничего неделять и выходить. Как то так:
    var currElClick = false;
    $(document).on('click','.visualp',function(e) {
        if (currElClick == $(this).attr('id')) return false;
        currElClick  = $(this).attr('id');
        
        //Далее код ф-ции...
    });
    Ответ написан
    Комментировать
  • Как остановить выполнение скрипта?

    @MrTimon
    Ну если тебе он больше ненужен, то можно при нажатии на кнопку стоп просто хайдить/удалять блок с таймером
    $('#stop').click(function() {
     $('#countdown').hide(); // захайдить блок
     $('#countdown').remove(); //удалить блок
    });

    Это первое что пришло в голову а вообще нужно смотреть методы плагина, может там есть какя-то пауза или чтото в этом роде
    Ответ написан
  • Правильность написания скрипта?

    @MrTimon
    Вижу ошибку в этой строке
    $container.infinitescroll({

    Нужно изменить infinitescroll на infiniteScroll, регистр букв имеет значение
    Ответ написан
    8 комментариев
  • Кто знает как поправить скрипт?

    @MrTimon
    Как то так https://jsfiddle.net/gkjktkak/4/ ?

    Менять значение opacity для дива с айдишкой main а не бекграунд для body.
    Ответ написан
    Комментировать
  • Как передать массив объектов другой функции?

    @MrTimon
    getShapeParams Переписать так:
    function getShapeParams() {
      var shapeParams = {};
      shapeParams = {
        radius: document.getElementsByClassName('radius')[0].value.toString(),
        x1Crd: document.getElementsByClassName('circle-x1-crd')[0].value.toString(),
        x2Crd: document.getElementsByClassName('circle-y2-crd')[0].value.toString()
      };
      console.log(shapeParams.radius);
      return shapeParams;
    }


    а во второй ф-ции: getShapeParams(shapeParams); заменить на var shapeParams = getShapeParams(); и все должно работать.

    Ну или обявить обект shapeParams вне функций. тогда получиться так:
    var shapeParams = {};
    function getShapeParams() {
      shapeParams = {
        radius: document.getElementsByClassName('radius')[0].value.toString(),
        x1Crd: document.getElementsByClassName('circle-x1-crd')[0].value.toString(),
        x2Crd: document.getElementsByClassName('circle-y2-crd')[0].value.toString()
      };
      console.log(shapeParams.radius);
    }
    
    function circle() {
      var canvas = document.getElementById('canvas');
      var context = canvas.getContext('2d');
    
      getShapeParams();
    
      this.radius = shapeParams.radius;
      this.x1Crd = shapeParams.x1Crd;
      this.x2Crd = shapeParams.x2Crd;
    
      context.clearRect(0, 0, canvas.width, canvas.height);
      context.beginPath();
      context.arc(x1Crd, x2Crd, radius, 0, Math.PI*2, false);
      context.fillStyle = 'red';
      context.fill();
      context.lineWidth = 1;
      context.strokeStyle = 'red';
      context.stroke();
    }
    
    circle();


    но первый метод полутше будет.
    Ответ написан
    Комментировать
  • Как сделать, чтобы элементы были сначала скрыты, а при нажатии раскрывались и закрывались?

    @MrTimon
    Если брать ваш пример то вам нужно только вначале поставить
    $('li:nth-child(n5)').hide();

    Ну тоисть вам просто нужно "спрятать" те елементы которые должны быть скрыты, это делает ф-ция .hide() обратная ей .show(). Также эти лишки можна и цсс-ом скрыть . https://jsfiddle.net/asxsoy9v/11/
    Ответ написан
    2 комментария
  • Как сделать автоматическое переключение вкладок?

    @MrTimon
    Можно написать ф-цию для перехода на следующий слайд аля:
    function showNextSlide() {
            var $activeslide = $('#support .slide.active');
            var $nextslide = $activeslide.next();
            if ($nextslide.length == 0) {
                $nextslide = $('#support .slide').first();
            }
            $activeslide.removeClass('active');
            $nextslide.addClass('active');
        }

    ну или какую-то полутше ) . А потом пишеш
    var loop = window.setInterval('showNextSlide',1000);

    и в свой метод клик на ссылку дополнительно обнулить значение loop
    $('#support nav a').click(function(e) {
        e.preventDefault();
        $(this).addClass('active').siblings().removeClass('active');
        var tab = $(this).data('id');
        $('#support .slide[data-id="' + tab + '"]').addClass('active').siblings().removeClass('active');
    
    //добавить эти строки
        window.clearInterval(loop);
        loop = null;
      });


    должно работать
    Ответ написан
  • Как сделать многоразовое событие onclick?

    @MrTimon
    Мое предложения: Добавить однаковые классы для дивов и разные атребуты для спанов и при нажатии на спан прятать все дивы и показывать нужный. Как то так:
    HTML:
    <div class="info">
              <div class="info_video">
                <span data-show="items_video">Информация</span>
                <span data-show="downoload">Скачать</span>
              </div>
              
              <div class="items items_video">
                <div class="info_item">
                  <li>Просмотров:<?php echo $movie['views']; ?></li>
                  <li>Добавил:</li>
                  <li>Добавлено:<?php echo $movie['date_format']; ?></li>
                </div>
                <div class="info_item">
                  <li>Продолжительность: </li>
                  <li>Размер: </li>
                  <li>Категория: </li>
                </div>
              </div>
              <div class="items  downoload">
                
              </div>


    В спане в атрибуте data-show нужно указать клас дива который должен быть виден при клике на него

    JS:
    $('.info_video span').click(function() {
        $('.items').hide();
        $('.'+$(this).data('show')).show();
    });


    Таким образом сюда же можно добавить еще несколько дивов и соответсвенных спанов и все будет работать
    Ответ написан
    Комментировать
  • Ошибка в маленьком коде как найти?

    @MrTimon
    Постав плюсы

    $(this).css({'background-image':'url('+srcImg+')'});
    Ответ написан
    Комментировать
  • Touchend вызывается много раз почему?

    @MrTimon
    Каждый раз когда вы натискаете на один .TestBlock на него навешиваются ивенты touchmove и touchend. Тоисть у вас также touchmove должен работать по правде, мне кажется вы просто не заметили.

    Непонятно зачем вы вообще touchmove и touchend ивенты навешиваете при таче на елемент. Я бы посоветол вынести их из под touchstart.
    $('.TestBlock').on('touchstart', function(event) {
    // bla bla bla
        
     }),false;
    
     $('.TestBlock').on('touchmove',function(event) {
          //bla bla bla
          }),false;
    
         $('.TestBlock').on('touchend',function(event) {
            console.log('End');
          }),false:


    ну или перед каждым навешиванием ивента удалять предыдущий.
    $('.TestBlock').on('touchstart', function(event) {
    // bla bla bla
         $(this).off('touchmove');
         $(this).on('touchmove',function(event) {
          //bla bla bla
          }),false;
         $(this).off('touchend');
         $(this).on('touchend',function(event) {
            console.log('End');
          }),false:
     }),false;


    Ну или, как писали выше, заменить on на one
    Ответ написан
  • Как менять текст одного элемента при клике на другой?

    @MrTimon
    Я бы посоветовал выводить текст в блоке слайдера в каком-то захайдженом диве и избавиться от инлайновых вызовов фунции. Получаэтся как то так.
    Сначала в верске
    <div class="slider-block-element"> 
        <div class="desc" style="display:none;">{{ target.description }}</div>
        ....
    </div>


    И потом вконец
    <script type="text/javascript">
        $(document).ready(function() {
            $('.slider-block-element').on('click',function() {
                $('#description').html($(this).find('.desc').html());
            })
        });
    </script>
    Ответ написан
  • Можно ли в JQUERY преобразовать текст camelize или dashed-case?

    @MrTimon
    Библиотеки не знаю но эти ф-ции несложно написать самому:

    function camelize (myString) {
     var camelCased = myString.toLowerCase()
                    .replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); })
                    .replace(/_([a-z])/g, function (g) { return g[1].toUpperCase(); });
    return camelCased;
    }
    
    alert(camelize('get_test-metod')); // вернет getTestMetod


    заменить нижнее подчеркивание на дефис вообще несложно
    myString.replace(/_/g, '-');

    А с camelize на dashed-case как то так
    function dashed(myString, separator) {
    if (!separator) separator = '-';
    var dashedCased = myString.replace(/([A-Z])/g, separator + '$1').toLowerCase();
    return dashedCased;
    }


    Как то так. Код не проверял, но должно работать. Надеюсь помог.
    Ответ написан
    Комментировать