Javascript мешает другим специфическим JavaScript - PullRequest
0 голосов
/ 30 марта 2019

У меня есть проблема, которую я решил решить, но не сделал.

Мой javascript для моей кнопки переключения бокового меню не будет работать при первой загрузке в макет, но будет работать, если щелкнуть ссылку в том же макете. Тогда это не сработает при перезагрузке любой страницы в том же макете.

Я «решил» это, добавив ...

//= require check_width_toggle на мое приложение. Js

Полная заявка.js:

//= require rails-ujs
//= require activestorage
//= require check_width_toggle
//= require jquery3
//= require popper
//= require bootstrap-sprockets
//= require turbolinks
//= require_tree .

Это работает, только если оно выше jquery3

Хотя я заметил, что это мешает другим javascript, но я смог исправить эти ситуации с помощью add:

 <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" ></script>

... в верхней части представлений с использованием JavaScript.

Но у меня есть еще один фрагмент javascript, который мешает мне решить то, что я пока не сделал.

Это мой чекбокс для проверки того, сколько чекбоксов отмечено при загрузке и при нажатии ...

Флажок JS :

function updateCheckboxes() {
  var $cs = $('#checkbox input:checkbox:checked');
  if ($cs.length >= 4) {
    $('#checkbox input:checkbox:not(:checked)').attr("disabled", true);
  } else {
    $('#checkbox input:checkbox').attr("disabled", false);
  }
}

$(document).on('turbolinks:load', function() {
  updateCheckboxes();
  $('#checkbox input:checkbox').change(updateCheckboxes)
})


$(".rotate").click(function(){
$(this).toggleClass("down")  ;
})

А вот JS для переключения меню, которое, кажется, испортилось. Имейте в виду, что я использую turbolinks, поэтому, если вы видите какой-либо код, я должен изменить его, не стесняйтесь, дайте мне знать предложения

$(function(){

  function checkWidthAndToggle() {
      if($(window).width()<=992){
          $("#wrapper").removeClass("toggled");
      }else{
          $("#wrapper").addClass("toggled");
      }
  }

  $("#menu-toggle").click(function(e) {
      e.preventDefault();
      $("#wrapper").toggleClass("toggled");
  });

  $(window).resize(checkWidthAndToggle);

  checkWidthAndToggle();
});

Проблемы, не требующие файла "check_width_toggle":

1.Не нажимайте для переключения загрузки страницы в макет.

2.Не нажимайте кнопку переключения, если не щелкнуть ссылку на новую страницу в том же макете.

3.Не нажимайте кнопку для переключения при перезагрузке страницы.

Преимуществами являются все остальные JS, работающие в обычном режиме, за исключением самого меню.

Проблемы с требованием:

1. Вмешательство в другие теги и файлы JS-скрипта.

- «решил» это, добавив теги сценария для jquery, но не работая для всех

2.Особенно мешает функции чекбокса код JavaScript.

Другие уведомления:

Когда я убираю команду require и use:

<%= javascript_include_tag 'application', 'check_width_toggle', 'data-turbolinks-track': 'reload' %>

в отличие от:

<%= javascript_include_tag 'check_width_toggle' %>

Это должно быть проблема с турболинками?

Его полная противоположность при использовании ...data-turbolinks-track... Это будет работать ТОЛЬКО при загрузке и перезагрузке. Если щелкнуть ссылку в макете, она перестает работать.

Что я хочу:

Для переключения меню на нажатие, несмотря ни на что. Я заметил, что средство проверки ширины в коде всегда будет работать, просто кажется, что функция click для переключения класса - это то, где проблема, кажется,

Есть ли веская причина иметь дерево внизу, например, порядок выполнения? Из того, что мне говорили и читали раньше, дерево всегда должно быть внизу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...