jQuery: функция скрытия не работает должным образом?

#javascript #jquery #html #hide

#javascript #jquery #HTML #скрыть

Вопрос:

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

Я не могу понять, почему мои функции hide () не работают. Я завернул это в $ (document).готовая функция, но я чувствую, что либо я чего-то не включаю, либо что-то еще мешает.

Также да, я проверил и увидел, что библиотека jQuery загружается перед моим JS-файлом.

 $(document).ready(function() {
    showCategories() {
      ("#dog").hide();
      ("#cat").hide();
      ("#eagle").hide():
      ("#sparrow").hide();
    }
      
    showCategories();
});  
     #purple {
      color: purple;
    }
    
    #pink {
      color: pink;
    }  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

    <button id="purple">Mammals </button>
    <button id="pink">Birds</button>
    
    <div class="mammalButtons"> 
      <button id="dog">Dog</button>
      <button id="cat">Cat</button>
    </div>
    
    <div class="birdButtons">
      <button id="eagle">Eagle</button>
      <button id="sparrow">Sparrow</button>
    </div>  

Кто-нибудь может дать какие-либо указания или предложения?

Комментарии:

1. синтаксическая ошибка в определении функции showCategories. И синтаксическая ошибка при поиске по селектору jQuery, в которой отсутствует ведущая $

2. Нет необходимости в ручках для кода. Просто разместите свой код в виде фрагмента прямо здесь, как я сделал для вас. Это раскрывает вашу проблему.

Ответ №1:

 $(document).ready(function() {
    showCategories() {
        ("#dog").hide();
        ("#cat").hide();
        ("#eagle").hide():
        ("#sparrow").hide();
    }
});
  

1) Неправильное определение функции

showCategories(){} неправильно отформатирован. Определения функций требуются function в начале их. Итак, чтобы исправить эту проблему, она должна выглядеть следующим образом

 $(document).ready(function() {
    function showCategories() {
        ("#dog").hide();
        ("#cat").hide();
        ("#eagle").hide():
        ("#sparrow").hide();
    }
});
  

Однако это приводит к другой проблеме. Это просто объявляет функцию. Он не выполняет ее. Поэтому вам пришлось бы изменить ее на…

 $(document).ready(function() {
    function showCategories() {
        ("#dog").hide();
        ("#cat").hide();
        ("#eagle").hide():
        ("#sparrow").hide();
    }

    showCategories();
});
  

для выполнения функции, но на самом деле в этот момент вы должны просто удалить ее.

 $(document).ready(function() {
    ("#dog").hide();
    ("#cat").hide();
    ("#eagle").hide():
    ("#sparrow").hide();
});
  

2) Опечатка при вызове jQuery

("#dog").hide(); и другие вызовы просто пытаются вызвать hide() строку, потому что вы отключили $ для поиска. Все это должно быть исправлено.

 $(document).ready(function() {
    $("#dog").hide();
    $("#cat").hide();
    $("#eagle").hide():
    $("#sparrow").hide();
});
  

На этом этапе это должно сработать, однако вы можете уменьшить это, поскольку вы выполняете одну и ту же операцию над несколькими объектами.

 $(document).ready(function() {
    $("#dog, #cat, #eagle, #sparrow").hide();
});
  

Комментарии:

1. @ScottMarcus этого не было в исходном сообщении