Кнопка глючит, и мне приходится дважды нажимать, чтобы открыть информацию, и фотографии не выравниваются должным образом, почему это так?

Я пытаюсь создать кнопку, которая скрывает информацию и показывает информацию. Весь контент находится в теге. Есть две проблемы с этим кодом.

1. You have to click the button twice to reveal information. 
2. When information is revealed the pictures don't align like it should.. it gets moved to the middle then the right. 

Как я могу исправить эти проблемы..?

$(document).ready(function() {
     $("#toggle").click(function() {
    var elem = $("#toggle").text();
    if (elem == "More News >") {
      //Stuff to do when btn is in the read more state
      $("#toggle").text("Read Less");
      $("#text").slideDown();
     } else {
      //Stuff to do when btn is in the read less state
      $("#toggle").text("More News >");
      $("#text").slideUp();
     }
    });
    });
#text{
       display:none;
        }

    .btn-container{
      margin: auto;
      height:44px;
      width:166.23px;
  
       }

        button{
        user-select:none;
       -webkit-user-select:none;
        -moz-user-select:none;
        -ms-user-select:none;
       cursor:pointer;
        border: solid 1px;
         padding:8px;
        font-size:1em;
       background: transparent;
       color:black;
        box-sizing:border-box;
     }
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h2  style = "text-align:center;" > All Stories</h2>
    
      <hr> </hr> 
       <div class = "smallSpacer">


      <div class = "row">
        <div class  = "col-sm-6" style = "text-align:left;"> 
          <p class = "#"  style = "color:lightgray;  ">Jan, 01, 2019 </p>
           <small>Title of the news article will be diplayed under the photo. </small>
        </div>

          <div class  = "col-sm-6" style = "text-align: right;">
            <img src = "/images/news1.jpg" style = "height:200px; width:300px; ">
           </div>
     </div>

      <hr> </hr> 

      <div class = "row">
        <div class  = "col-sm-6" style = "text-align:left;"> 
          <p class = "#"  style = "color:lightgray;  ">Jan, 01, 2019 </p>
           <small>Title of the news article will be diplayed under the photo. </small>
        </div>

          <div class  = "col-sm-6" style = "text-align: right;">
            <img src = "/images/news2.jpg" style = "height:200px; width:300px; ">
           </div>
     </div>

     <hr> </hr> 

      <div class = "row">
        <div class  = "col-sm-6" style = "text-align:left;"> 
          <p class = "#"  style = "color:lightgray;  ">Jan, 01, 2019 </p>
           <small>Title of the news article will be diplayed under the photo. </small>
        </div>

          <div class  = "col-sm-6" style = "text-align: right;">
            <img src = "/images/news3.jpg" style = "height:200px; width:300px; ">
           </div>
     </div>

     <hr> </hr> 
     <div class = "smallSpacer">


      <div>
        <br>
        <span id = "text">

        <div class = "row">
        <div class  = "col-sm-6" style = "text-align:left;"> 
          <p class = "#"  style = "color:lightgray;  ">Jan, 01, 2019 </p>
           <small>Title of the news article will be diplayed under the photo. </small>
        </div>

          <div class  = "col-sm-6" style = "text-align: right;">
            <img src = "/images/news2.jpg" style = "height:200px; width:300px; ">
           </div>
     </div>

     <hr> </hr> 

      <div class = "row">
        <div class  = "col-sm-6" style = "text-align:left;"> 
          <p class = "#"  style = "color:lightgray;  ">Jan, 01, 2019 </p>
           <small>Title of the news article will be diplayed under the photo. </small>
        </div>

          <div class  = "col-sm-6" style = "text-align: right;">
            <img src = "/images/news3.jpg" style = "height:200px; width:300px; ">
           </div>
     </div> <br>

      </div>
      <div class = "btn-container">
        <button id = "toggle"> More News > </button>
      </div>
      <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js'></script>

      <div class = "bigSpacer"></div>
      </span>

       </section>

Ожидается: кнопка должна плавно отображать информацию одним щелчком мыши, а изображения должны выравниваться по правому краю.

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

Привет, @tsharma, у тебя есть JSFiddle/codepen/etc твоего проекта?

Bodrov 28.05.2019 21:09

К сожалению, я не в данный момент.

tsharma 28.05.2019 21:21
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
2
45
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Причина, по которой ваш первый щелчок не регистрируется, вероятно, заключается в том, что точный текст в вашем html <button id = "toggle"> More News > </button> отличается от вашего кода jquery $("#toggle").text("More News >"); Поэтому при первом нажатии срабатывает оператор else, назначающий кнопку «Дополнительные новости >», затем он переключается туда после.

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

<button id = "toggle" toggle = "expand">More News ></button>

а затем используйте следующее:

if ($("#toggle").attr("toggle") === "expand") {
  $("#text").css("display", "inline");
  $("#toggle").attr("toggle", "shrink");
}

Я добавил это в код файла main.js, когда я нажимаю кнопку, он работает нормально. Кнопка работает одним щелчком мыши, и изображения выравниваются правильно. Но затем снова появляется кнопка «Дополнительные новости», и если я нажимаю ее, она меняется на «Меньше читать», и все снова дает сбой, и фотографии не выравниваются должным образом.

tsharma 28.05.2019 21:21

$(document).ready(function() { $("#toggle").click(function() { var elem = $("#toggle").text(); if (elem == "Больше новостей >" ) { // Что нужно сделать, когда кнопка находится в состоянии «Читать больше» $("#toggle").text("Read Less"); $("#text").slideDown(); } else { //Что нужно сделать делать, когда btn находится в состоянии «меньше чтения» ("toggle") === "expand") { $("#text").css("display", "inline"); $("#toggle").attr("toggle", "shrink") ; } }); });

tsharma 28.05.2019 21:24

это то, что я добавил, это то, что вы имели в виду!

tsharma 28.05.2019 21:24

Вам нужно добавить оператор else туда. В противном случае он не будет текст другого случая. else { $("#text").css("display", "none"); $("#toggle").attr("toggle", "expand"); }

ayang726 28.05.2019 21:40

Теперь кнопка неактивна, а текст не появляется и не скрывается.

tsharma 28.05.2019 22:02

$(document).ready(function() { $("#toggle").click(function() { var elem = $("#toggle").text(); if (elem == "Больше новостей >" ) { // Что нужно сделать, когда кнопка находится в состоянии «Читать больше» $("#toggle").text("Read Less"); $("#text").slideDown(); } else { //Что нужно сделать делать, когда btn находится в состоянии «меньше чтения» ("toggle") === "expand") { else { $("#text").css("display", "none"); $("#toggle").attr("toggle", "expand "); } };

tsharma 28.05.2019 22:02

Другие вопросы по теме