jquery - 仅点击元素并隐藏另一个元素

时间:2015-10-05 21:41:50

标签: javascript jquery html css

我正在尝试创建一个菜单。单击菜单元素时,我想为其边框底部的宽度设置动画。 我的问题是,当单击另一个元素时,我找不到如何将边框底部宽度设置为“0”的方法。

任何解决方案?

$("#hww, #proj, #digi, #cont").click(function(){
	
	$( this ).animate({
			
			borderBottomWidth: "10px",
			}, 200 );
			
			
});
.menu_text {
	
	opacity: 1;
	font-size: 20px;

	margin-right: 100px;
	
	padding-left: 0px;
	cursor: pointer;
	border: 0px solid black;
	border-bottom: 1px solid rgba(0,0,0,0.5);
	border-bottom-width: 0px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div id="menu_bar">
  <div id="menu_box">
  <div id="cont" class="menu_text">CONTACT</div>
  <div id="digi" class="menu_text">DIGITAL SERVICES</div>
	
	<div id="proj" class="menu_text">PROJECTS</div>
	<div id="hww" class="menu_text">HOW WE WORK</div>
	
  </div>
</div> 

1 个答案:

答案 0 :(得分:0)

您可以保留对变量中所有元素的引用,并将它们设置为0。

&#13;
&#13;
var menu = $("#hww, #proj, #digi, #cont").click(function() {
  
  // remove from previous element
  menu.not(this).animate({
    borderBottomWidth: 0
  }, 200);

  // show on current
  $(this).animate({
    borderBottomWidth: "10px",
  }, 200);


});
&#13;
.menu_text {
  opacity: 1;
  font-size: 20px;
  margin-right: 100px;
  padding-left: 0px;
  cursor: pointer;
  border: 0px solid black;
  border-bottom: 1px solid rgba(0, 0, 0, 0.5);
  border-bottom-width: 0px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div id="menu_bar">
  <div id="menu_box">
    <div id="cont" class="menu_text">CONTACT</div>
    <div id="digi" class="menu_text">DIGITAL SERVICES</div>

    <div id="proj" class="menu_text">PROJECTS</div>
    <div id="hww" class="menu_text">HOW WE WORK</div>

  </div>
</div>
&#13;
&#13;
&#13;

更好的解决方案是通过CSS处理所有内容

&#13;
&#13;
$("#menu_box").on('click', '.menu_text', function(e){
   $(this).addClass('active').siblings().removeClass('active');
});
&#13;
.menu_text {
  opacity: 1;
  font-size: 20px;
  margin-right: 100px;
  padding-left: 0px;
  cursor: pointer;
  border: 0px solid black;
  border-bottom: 1px solid rgba(0, 0, 0, 0.5);
  border-bottom-width: 0px;
  
  transition: border-bottom-width 200ms;
}

.menu_text.active{
  border-bottom-width:10px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div id="menu_bar">
  <div id="menu_box">
    <div id="cont" class="menu_text">CONTACT</div>
    <div id="digi" class="menu_text">DIGITAL SERVICES</div>

    <div id="proj" class="menu_text">PROJECTS</div>
    <div id="hww" class="menu_text">HOW WE WORK</div>

  </div>
</div>
&#13;
&#13;
&#13;