Javascript 保持可扩展列表打开

Javascript to keep expandable list open

我正在编写一个网站,目前有 3 个列表项可以在点击时展开和缩小。第三个列表项包含一个联系表单,我希望它在单击表单字段时不会缩小,但如果单击列表项的任何其他部分,它仍然会缩小。这可能吗?这是我目前使用的HTML和Javascript

<ul class="tiles">
  <li class="tiles__tile" data-tile="1">
    <h2>About</h2>
  </li>
  <li class="tiles__tile" data-tile="2">
    <h2>Work</h2>
  </li>
  <li class="tiles__tile" data-tile="3">
    <h2>Contact</h2>
  </li>
</ul>
<li class="content__item" id="3">
    <div class="content-wrap">
      <h2> GET IN TOUCH </h2>
    <form class="form" id="form1" method="post" action="" method="post"/>
      <p class="name">
        <input name="name" type="text" class="validate[required,custom[onlyLetter],length[0,100]] feedback-input" placeholder="Name" id="name"/>
      </p>

      <p class="email">
        <input name="email" type="text" class="validate[required,custom[email]] feedback-input" id="email" placeholder="Email"/>
      </p>

      <p class="text">
        <textarea name="comment" class="validate[required,length[6,300]] feedback-input" id="comment" placeholder="Comment"></textarea>
      </p>


      <div class="submit">
        <input type="submit" value="SEND" id="button-blue" href=""/>
        <div class="ease"></div>
      </div>
</div>
    </div>
  </li>
</ul>
</form>



    <li class="content__item" id="3">
    <div class="content-wrap">
      <h2> GET IN TOUCH </h2>
    <form class="form" id="form1" method="post" action="" method="post"/>
      <p class="name">
        <input name="name" type="text" class="validate[required,custom[onlyLetter],length[0,100]] feedback-input" placeholder="Name" id="name"/>
      </p>

      <p class="email">
        <input name="email" type="text" class="validate[required,custom[email]] feedback-input" id="email" placeholder="Email"/>
      </p>

      <p class="text">
        <textarea name="comment" class="validate[required,length[6,300]] feedback-input" id="comment" placeholder="Comment"></textarea>
      </p>


      <div class="submit">
        <input type="submit" value="SEND" id="button-blue" href="dillonpropp.com"/>
        <div class="ease"></div>
      </div>
</div>
    </div>
  </li>
</ul>
</form>



 var tileBtn = $('li.tiles__tile');
var allContent = $('li.content__item');
var contentWrap = $('.content-wrap');

tileBtn.on('click touchstart', function() {
  var self = $(this);
  var match = self.attr('data-tile');
  var allContent = $('li.content__item');
  var content = $('li#' + match);

  self.toggleClass('active');

  content.toggleClass('active');

 contentWrap.css({'transition-delay': '.35s'});

  return false;
});

$(window).on('click touchstart', function() {
  if (allContent.hasClass('active') && tileBtn.hasClass('active')) {
    allContent.removeClass('active');
    setTimeout(function() {
      tileBtn.removeClass('active');
    }, 400);
    contentWrap.css({'transition-delay': '.0s'});

  }
})

问题是附加到 window 对象的处理程序。

var tileBtn = $('li.tiles__tile');
var allContent = $('li.content__item');
var contentWrap = $('.content-wrap');

tileBtn.on('click touchstart', function() {
  var self = $(this);
  var match = self.attr('data-tile');
  var allContent = $('li.content__item');
  var content = $('li#' + match);

  self.toggleClass('active');

  content.toggleClass('active');

  contentWrap.css({
    'transition-delay': '.35s'
  });

  return false;
});

$(window).on('click touchstart', function(e) {
  if (allContent.hasClass('active') && tileBtn.hasClass('active') && !$(e.target).is('.content__item :input')) {
    allContent.removeClass('active');
    setTimeout(function() {
      tileBtn.removeClass('active');
    }, 400);
    contentWrap.css({
      'transition-delay': '.0s'
    });

  }
})
.content__item {
  display: none;
}
.content__item.active {
  display: list-item;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul class="tiles">
  <li class="tiles__tile" data-tile="1">
    <h2>About</h2>
  </li>
  <li class="tiles__tile" data-tile="2">
    <h2>Work</h2>
  </li>
  <li class="tiles__tile" data-tile="3">
    <h2>Contact</h2>
  </li>
</ul>
<ul>
  <li class="content__item" id="1">1</li>
  <li class="content__item" id="2">2</li>
  <li class="content__item" id="3">
    <div class="content-wrap">
      <h2> GET IN TOUCH </h2>

      <form class="form" id="form1" method="post" action="" method="post">
        <p class="name">
          <input name="name" type="text" class="validate[required,custom[onlyLetter],length[0,100]] feedback-input" placeholder="Name" id="name" />
        </p>
        <p class="email">
          <input name="email" type="text" class="validate[required,custom[email]] feedback-input" id="email" placeholder="Email" />
        </p>
        <p class="text">
          <textarea name="comment" class="validate[required,length[6,300]] feedback-input" id="comment" placeholder="Comment"></textarea>
        </p>
        <div class="submit">
          <input type="submit" value="SEND" id="button-blue" href="dillonpropp.com" />
          <div class="ease"></div>
        </div>
      </form>
    </div>
  </li>
</ul>