Javascript скрывать и показывать контент - PullRequest
0 голосов
/ 26 августа 2011

Я искал чистый ответ CSS для сокрытия и показа контента, но без удачи я поиграл с куском кода JavaScript. Мой вопрос находится под кодом, так как он может помочь вам сначала увидеть код.

      <script type="text/javascript">
    $(document).ready(function(){
            $('.text_container').addClass("visible");

        $('.text_container').click(function() {
            var $this = $(this);
            if ($this.hasClass("visible")) {
                    $(this).removeClass("visible").addClass("hidden");
            } else {
                    $(this).removeClass("hidden").addClass("visible");
            }
        });
    });
   </script>  


        <div id="services" class="text_container"> 
         <h4>SERVICES</h4>
             <div>
              <p>Loads of text blah blah blah</p>
             </div>
         </div>


         /* HIDE and SHOW content javascript function */
  .hidden div {display:none;}
  .visible div {display:block;} 

  .text_container {
      background-color: #39b54a;
     background-image: url("pattern2.png");
     border: 1px solid #777777;
    box-shadow: 0 1px 1px  inset, 0 0 40px rgba(0, 0, 0, 0.5) inset, 0 16px 0 rgba(255, 255, 255, 0.4) inset, 0 4px 5px rgba(0, 0, 0, 0.6);
    color: #000000;
    padding: 5px;
    text-align: left;
    width: auto;

  }
  .text_container h4 {
     cursor: pointer;
  }
  .text_container div p {
      margin-bottom: 10px;
  }
  .visible > div {
   display: block;
   font-size: 17px;
    height: 100%;
  }

  #rating > div {
    clear: left;
    height: 260px;
  }
  /* end of HIDE and SHOW content javascript function */  

В настоящее время, как и ожидалось, div с областью class = text_container можно щелкать, поэтому, если в форме DIV помещается форма при выборе формы, содержимое скрывается. Я хотел бы сделать только элемент H4 кликабельна, поэтому нажатие на показанный контент не скроет контент.

Я бесполезен в javascript, и я думаю, что это требует перенастройки js. Спасибо

Ответы [ 6 ]

1 голос
/ 26 августа 2011

Это достигнет вашей цели, пример :

$(document).ready(function() {
    $('.text_container h4').addClass("visible");

    $('.text_container h4').click(function() {
        var $this = $(this).parent();
        if ($this.hasClass("visible")) {
            $this.removeClass("visible").addClass("hidden");
        } else {
            $this.removeClass("hidden").addClass("visible");
        }
    });
});

Мы выбираем H4 и добавляем в него событие щелчка, но затем используем .parent () для доступа к родительскому DIV.

1 голос
/ 26 августа 2011

Вы можете использовать:

$('.text_container h4').click(function() {
    if($(this).hasClass("visible")) {
        $(this).removeClass("visible").addClass("hidden");
    } else {
        $(this).removeClass("hidden").addClass("visible");
    }
});

Содержимое в $ ('...') похоже на селектор CSS, поэтому, если вы знаете CSS, то это не будет проблемой для вас.

С помощью CSS вы можете стилизовать этот элемент h4 с помощью:

.text_container h4 { color: #000000; }

и точно так же вы можете создать упакованный набор с помощью jQuery, который выбирает его с помощью:

$('.text_container h4')
0 голосов
/ 26 августа 2011

Я не уверен, как кто-то сможет нажать на элемент с display: none. Также замените это:

if ($this.hasClass("visible")) {
    $(this).removeClass("visible").addClass("hidden");
} else {
    $(this).removeClass("hidden").addClass("visible");
}

С этим:

$(this).toggle();

Полный код:

$(function() {
    $('.text_container h4').click(function() {
        $(this).parent().toggle(); // toggles between visible and hidden
    });
});
0 голосов
/ 26 августа 2011

Просто замените на

$('.text_container h4').click( ...
0 голосов
/ 26 августа 2011

изменить это:

      $('.text_container').click(function() {

на это:

      $('.text_container h4').click(function() {
0 голосов
/ 26 августа 2011

заменить $('.text_container')... на $('.text_container h4')... или, что еще лучше, $('h4')...., если это единственный элемент H4 на странице.

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