If/Else语句不能正常工作(特别是Else语句不能正常工作)

If/Else statement not functioning properly (Else statement won't function in particular)

本文关键字:工作 常工作 Else 语句 不能 特别是 If      更新时间:2023-09-26

我正在尝试创建一个脚本,根据是否选择某个选项来管理内容的可见性。我遇到的问题是,我的if/else语句不能正常运行。

当最后一个.radial-container单选按钮被选中时,它显示了div .provider-info。"我想保留我的电话号码")。

当类.select从父容器中移除时,它应该是slideUp,但它没有。

我做了一些实验,用一段不同的代码获得了我想要的功能:

 $(function() {
  $('.radial-container').on('click', function() {
    $(this).addClass('select').siblings().removeClass('select');
    if($('.radial-container').last().hasClass('select')) {
      $(this).children('.provider-info').slideDown(300);
    } else {
      $('.provider-info').slideUp(300);
    }
  })
})

但是上面的片段的问题是它只适用于无限制的第2行。无限制的第一行基本上失去了功能。

我如何修复这段代码,以获得if/else语句正常工作?我只希望div .provider-info是可见的,当第二个单选按钮被选中。

谢谢,

- m

$(function() {
  $('.radial-container').on('click', function() {
    $(this).addClass('select').siblings().removeClass('select');
    if($('.radial-container').hasClass('select')) {
      $(this).children('.provider-info').slideDown(300);
    } else {
      $('.provider-info').slideUp(300);
    }
  })
})
.phn-option-container {
	display:block;
}
.phn-unl {
	position:relative;
	margin:40px 0;
}
.phn-unl:after {
	content:'';
	display:block;
	position:relative;
	background:#e8e8e8;
	height:1px;
	top:30px;
	clear:both;
}
.radial-container {
	display:block;
	cursor: pointer;
	clear:both;
}
.phn-radio-container {
	margin:10px;
	clear:both;
}
.phn-unl > h4 {
	position:relative;
	left:10px;
	font-weight:600;
	color:#22ddc0;
}
.radial-container p {
	position:relative;
	float:left;
	left:25px;
	top:17px;
	color:#787878;
}
.radial-container.select .phn-radial .phn-center-dot {
	display:block;
}
.phn-radial {
	position:relative;
	float:left;
	height:35px;
	width:35px;
	padding:2px;
	margin:10px 0;
	border:5px solid #e8e8e8;
	border-radius:50%;
	left:10px;
	clear:both;
	cursor:pointer;
}
.phn-center-dot {
	display:none;
	position:relative;
	height:21px;
	width:21px;
	background-color:#E16E5B;
	border-radius:50%;
}
.provider-info label {
	color:#787878;
	margin:25px 0 0 60px;
}
.provider-info label span {
	position:relative;
	color:#E16E5B;
	top:-3px;
}
.provider-info input {
	background-color:transparent;
	border-width:0 0 2px;
	border-color:#787878;
	border-radius:0;
	margin-left:10px;
	width:270px;
	font-size:16px;
}
::-webkit-input-placeholder {
   font-style: italic;
}
:-moz-placeholder {
   font-style: italic;
}
::-moz-placeholder {
   font-style: italic;
}
:-ms-input-placeholder {
   font-style: italic;
}
.provider-info input:focus {
	border-color:#22ddc0;
	outline:0;
}
.provider-info {
	display:none;
	clear:both;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<div class="phn-option-container">
          <div class="phn-unl" data-unl-line="1">
            <h4>Unlimited Line 1</h4>
            <div class="radial-container select">
              <div class="phn-radial">
                <div class="phn-center-dot"></div>
              </div>
              <p>I would like a <strong>new</strong> number</p>
            </div>
            <div class="radial-container">
              <div class="phn-radial">
                <div class="phn-center-dot"></div>
              </div>
              <p>I would like to <strong>keep</strong> my number</p>
              <div class="provider-info">
                <div>
                  <label>Current Number: <span>*</span></label>
                  <input type="text" placeholder="e.g. (555) 555-5555"/>
                </div>
                <div>
                  <label>Current Provider: <span>*</span></label>
                  <input type="text" placeholder="e.g. Verizon"/>
                </div>
              </div>
            </div>
          </div>
          <div class="phn-unl" data-unl-line="2">
            <h4>Unlimited Line 2</h4>
            <div class="radial-container select">
              <div class="phn-radial">
                <div class="phn-center-dot"></div>
              </div>
              <p>I would like a <strong>new</strong> number</p>
            </div>
            <div class="radial-container">
              <div class="phn-radial">
                <div class="phn-center-dot"></div>
              </div>
              <p>I would like to <strong>keep</strong> my number</p>
              <div class="provider-info">
                <div>
                  <label>Current Number: <span>*</span></label>
                  <input type="text" placeholder="e.g. (555) 555-5555"/>
                </div>
                <div>
                  <label>Current Provider: <span>*</span></label>
                  <input type="text" placeholder="e.g. Verizon"/>
                </div>
              </div>
            </div>
          </div>
        </div>

这应该可以完成工作:

$('.radial-container').on('click', function() {
    $(this).addClass('select')
           .siblings('.radial-container')
           .removeClass('select')
           .find('.provider-info')
           .slideUp(300);
    $('.provider-info', this).slideDown(300);
});
固定演示:

$(function() {
    $('.radial-container').on('click', function() {
        $(this).addClass('select')
               .siblings('.radial-container')
               .removeClass('select')
               .find('.provider-info')
               .slideUp(300);
        $('.provider-info', this).slideDown(300);
    });
});
.phn-option-container {
	display:block;
}
.phn-unl {
	position:relative;
	margin:40px 0;
}
.phn-unl:after {
	content:'';
	display:block;
	position:relative;
	background:#e8e8e8;
	height:1px;
	top:30px;
	clear:both;
}
.radial-container {
	display:block;
	cursor: pointer;
	clear:both;
}
.phn-radio-container {
	margin:10px;
	clear:both;
}
.phn-unl > h4 {
	position:relative;
	left:10px;
	font-weight:600;
	color:#22ddc0;
}
.radial-container p {
	position:relative;
	float:left;
	left:25px;
	top:17px;
	color:#787878;
}
.radial-container.select .phn-radial .phn-center-dot {
	display:block;
}
.phn-radial {
	position:relative;
	float:left;
	height:35px;
	width:35px;
	padding:2px;
	margin:10px 0;
	border:5px solid #e8e8e8;
	border-radius:50%;
	left:10px;
	clear:both;
	cursor:pointer;
}
.phn-center-dot {
	display:none;
	position:relative;
	height:21px;
	width:21px;
	background-color:#E16E5B;
	border-radius:50%;
}
.provider-info label {
	color:#787878;
	margin:25px 0 0 60px;
}
.provider-info label span {
	position:relative;
	color:#E16E5B;
	top:-3px;
}
.provider-info input {
	background-color:transparent;
	border-width:0 0 2px;
	border-color:#787878;
	border-radius:0;
	margin-left:10px;
	width:270px;
	font-size:16px;
}
::-webkit-input-placeholder {
   font-style: italic;
}
:-moz-placeholder {
   font-style: italic;
}
::-moz-placeholder {
   font-style: italic;
}
:-ms-input-placeholder {
   font-style: italic;
}
.provider-info input:focus {
	border-color:#22ddc0;
	outline:0;
}
.provider-info {
	display:none;
	clear:both;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<div class="phn-option-container">
          <div class="phn-unl" data-unl-line="1">
            <h4>Unlimited Line 1</h4>
            <div class="radial-container select">
              <div class="phn-radial">
                <div class="phn-center-dot"></div>
              </div>
              <p>I would like a <strong>new</strong> number</p>
            </div>
            <div class="radial-container">
              <div class="phn-radial">
                <div class="phn-center-dot"></div>
              </div>
              <p>I would like to <strong>keep</strong> my number</p>
              <div class="provider-info">
                <div>
                  <label>Current Number: <span>*</span></label>
                  <input type="text" placeholder="e.g. (555) 555-5555"/>
                </div>
                <div>
                  <label>Current Provider: <span>*</span></label>
                  <input type="text" placeholder="e.g. Verizon"/>
                </div>
              </div>
            </div>
          </div>
          <div class="phn-unl" data-unl-line="2">
            <h4>Unlimited Line 2</h4>
            <div class="radial-container select">
              <div class="phn-radial">
                <div class="phn-center-dot"></div>
              </div>
              <p>I would like a <strong>new</strong> number</p>
            </div>
            <div class="radial-container">
              <div class="phn-radial">
                <div class="phn-center-dot"></div>
              </div>
              <p>I would like to <strong>keep</strong> my number</p>
              <div class="provider-info">
                <div>
                  <label>Current Number: <span>*</span></label>
                  <input type="text" placeholder="e.g. (555) 555-5555"/>
                </div>
                <div>
                  <label>Current Provider: <span>*</span></label>
                  <input type="text" placeholder="e.g. Verizon"/>
                </div>
              </div>
            </div>
          </div>
        </div>

你想要使用(美元)。else块里也有孩子吗?

 $(this).children('.provider-info').slideDown(300);
} else {
  $(this).children('.provider-info').slideUp(300);