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

    Decadal
    @Decadal
    ajax работает для кросс-доменных запросов только если на сервере стоит Access-Control-Allow-Origin - * заголовок.
    можете убедиться, что проблема именно в этом, открыв консоль браузера и посмотрев на лог ошибок. Вам придётся задействовать back-end, скорее всего.
    Ответ написан
    Комментировать
  • Чем отличается Riot.js от react.js?

    Decadal
    @Decadal
    Ответ написан
    Комментировать
  • Как реализовать следующее в JS?

    Decadal
    @Decadal
    (".open-1").click(function() {
       var opened = $(this).data("opened"),
       $bTag = $("b");
       if(opened)
       {
          $(this).html("+");
          $bTag.fadeIn(0);
          $(this).data("opened","");
       }
       else 
       {
          $(this).html("-");
          $bTag.fadeOut(0);
          $(this).data("opened","1");
       }
        $(".answer-one").slideToggle();
      })

    но учтите, что при использовании нескольких элементов такого вида вы должны оборачивать каждый элемент в некоторый родительский контейнер, и указывать родителя при работе с тегом b. На данный момент код, который подхватывает "b", будет работать со всей страницей вообще.

    каждая конструкция такого вопроса должна представлять из себя следующее:
    <div class="quest-content">
    <div class="open">+</div>
    <b>Вопрос? </b>
    <div class="answer">Всплывающий текст-подсказка</div>
    </div>


    тогда вы сможете создать несколько экземпляров (просто копировать-вставить разметку выше), задать в каждом - свой текст, вопрос и прочее, и написать общий код:

    (".open").click(function() {
       var opened = $(this).data("opened"),
       $parent = $(this).parent(".quest-content"),
       $bTag = $parent.find("b");
       if(opened)
       {
          $(this).html("+");
          $bTag.fadeIn(0);
          $(this).data("opened","");
       }
       else 
       {
          $(this).html("-");
          $bTag.fadeOut(0);
          $(this).data("opened","1");
       }
        $parent.find(".answer").slideToggle();
      })


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

    Decadal
    @Decadal
    А вы сделайте блок, в который не всё влазит. CSS-класс с конкретной высотой и overflow-y: hidden;
    По нажатию на "показать всё" CSS-класс удалять, и блок сам развернётся "во весь рост".
    Ответ написан
  • Готовый плагин vs самописный костыль?

    Decadal
    @Decadal
    Ответ на ваш вопрос зависит от контекста применения того или иного решения. Работаете ли вы над проектом сам или командой? Документируете ли свои костыли или такой привычки не имеете? Может возникнуть потребность отдать все исходники кому-то, или приобщить юниора к сопровождению вашей системы, и всякое такое.
    Слишком мало сказано, чтобы дать вам конкретный ответ.
    Если над проектом работает больше одного человека или проект в перспективе будет развиваться, просто используйте плагин. Гибкость это вклад в будущее.
    Если вы решите, что ваш костыль достаточно прост, юзабелен, понятно описан, а в будущем быстро и безболезненно может быть заменён на плагин, оставьте костыль.
    Ответ написан
    Комментировать
  • Подойдет ли Флэнаган книг для js?

    Decadal
    @Decadal
    если вы про ту, которая на 1000+ страниц, то она не скоро устареет, но изучение js лучше начать с электронных ресурсов наподобиe https://learn.javascript.ru/
    Флэнаган скорее как справочник хорош.
    Ответ написан
    Комментировать
  • Не работает preventDefault Что я неправильно сделал?

    Decadal
    @Decadal
    https://jsfiddle.net/0mn1L72m/

    Всё нормально работает. Скорее всего, у вас в другой части JavaScript есть ошибка, которая не позволяет выполнить данный фрагмент кода, и вас кидает по ссылке как обычно.
    Ответ написан