【问题标题】:Hiding and changing div elements in Jquery在 Jquery 中隐藏和更改 div 元素
【发布时间】:2016-04-28 07:53:36
【问题描述】:

嗨,伙计们,我需要您的帮助,当单击按钮 1 时,我在网页上有两个按钮,其下方出现一个箭头并且按钮的背景颜色发生变化,单击按钮 2 时同样适用,但按钮 1 下方的箭头消失并且背景颜色变化。

我已经实现了这些属性中的大部分,但我不明白为什么在单击按钮 2 后返回按钮 1 按钮 2 下方的箭头没有隐藏。

这是我的代码

++++++++ HTML +++++++

 $(document).ready(function() {
                $('#select').click(function(){
                    $(this).css('background','#1169ff');
                    $(this).css('color','#ecf0f1');
                    $('#triangle_down').add('#triangle_down1').show();
                    if($('#select1').css('background','#1169ff') && $('#select1').css('color','#ecf0f1')){
                        $('#select1').css('background','#ecf0f1');
                        $('#select1').css('color','#1169ff');
                    } else if($('#triangle_down2').add('#triangle_down3').addClass('hidden')){
                        $('#triangle_down').add('#triangle_down1').show();
                    }


                });
                $('#select1').on('click', function() {
                    $(this).css('background','#1169ff');
                    $(this).css('color','#ecf0f1');
                    $('#triangle_down').add('#triangle_down1').addClass('hidden');
                    $('#select').css('background','#ecf0f1');
                    $('#select').css('color','#1169ff');
                    $('#triangle_down2').add('#triangle_down3').show();
                });

            })
#subscribe p{
text-align:center;
}
#subscribe input {
background: rgba(255, 255, 255, 0.52);
color: #666666;
vertical-align: middle;
width: 593px;
border: 1px solid rgba(255, 255, 255, 0.76);
padding: 0 10px;
height: 60px;
	font-size: 20px;
	outline: 0;
}
#subscribe input[type="submit"]{
background: rgb(255, 135, 19);
color: #ecf0f1;
/*width: auto;*/
padding: 14px 25px;
cursor: pointer;
margin-left: 50px
font-weight: bold; 
height: 60px;
display: inline-block;
border: 2px solid;
	font-size: 20px;
	outline: 0;
}

#subscribe button[id="select"],[id="select1"]{
background: #ecf0f1;
	width: 370px;
	height: 60px;
	/*padding-left: 100px;*/
	/*padding-right: 100px;*/
	padding: 0 10px;
	vertical-align: middle;
	font-size: 20px;
	outline: 0;
	color: #1169ff;
	border: 2px solid;
	text-align:center;

}

#subscribe input[id="main"] {
	width: 150px;
	outline: 0;
}
#triangle_down {

	position:absolute;
    width: 0;
    height: 0;
    border-top: 15px solid #1169ff;
    border-left: 9px solid transparent;
    border-right: 9px solid transparent;
	top:125px;
    left:90px;

}

#triangle_down1 {

	position:absolute;
    width: 0;
    height: 0;
    border-top: 20px solid #ecf0f1;
    border-left: 11px solid transparent;
    border-right: 11px solid transparent;
	top:125px;
    left:88px;

}
#triangle_down3 {

	position:absolute;
    width: 0;
    height: 0;
    border-top: 15px solid #1169ff;
    border-left: 9px solid transparent;
    border-right: 9px solid transparent;
	top:125px;
    left:464px;

}

#triangle_down2 {

	position:absolute;
    width: 0;
    height: 0;
    border-top: 20px solid #ecf0f1;
    border-left: 11px solid transparent;
    border-right: 11px solid transparent;
	top:125px;
    left:462px;

}
<div id="subscribe">
                <form action="" method="post" onsubmit="">
                    <p>

                        <button type="button" id="select">Acheter</button>
                        <button type="button" id="select1">Louer</button>

                    </p>


                  <!-- Using 2 traingles to achieve border outline :) -->
                    <i id="triangle_down1" style="display: none"><i></i></i>
                  <i id="triangle_down" style="display: none"><i></i></i><br/>

                    <!--Louer triangles -->
                  <i id="triangle_down2" style="display: none"><i></i></i>
                  <i id="triangle_down3" style="display: none"><i></i></i><br/>

                    <div></div>

                    <p><input name="" placeholder="Entrer une ville au Maroc" type="text" id="landing-entry"/>
                        <a href="/results"> <input type="submit" id="main" value="Search"/></a>
                    </p>
                </form>

谢谢

【问题讨论】:

  • 你有这个代码笔或小提琴吗?此外,您似乎永远不会输入您的 else if 条件,因为您的 if 将始终评估为 true,因为它将返回一个 jquery 对象
  • 你没有在你的 sn-p 中包含 jquery,看起来 jquery toggle 会更好,马上回来
  • @Billy 正在使用流星.js Jquery 已包含在其中。
  • 你还没有将它包含在你的代码 sn-p 中。当您发布代码时,它在顶部有包含 jquery 和其他库的框。

标签: javascript jquery html class-visibility


【解决方案1】:

这样做,请查看 jquery toggle 或其他方法,因为您的代码很难在 mo 中使用。在第一次点击f中添加$('#triangle_down2').add('#triangle_down3').hide();

$(document).ready(function() {
                $('#select').click(function(){
                    $(this).css('background','#1169ff');
                    $(this).css('color','#ecf0f1');
                    $('#triangle_down').add('#triangle_down1').show();
                    if($('#select1').css('background','#1169ff') && $('#select1').css('color','#ecf0f1')){
                        $('#select1').css('background','#ecf0f1');
                        $('#select1').css('color','#1169ff');
                      $('#triangle_down2').add('#triangle_down3').hide();
                    } else if($('#triangle_down2').add('#triangle_down3').addClass('hidden')){
                        $('#triangle_down').add('#triangle_down1').show();
                    }


                });
                $('#select1').on('click', function() {
                    $(this).css('background','#1169ff');
                    $(this).css('color','#ecf0f1');
                    $('#triangle_down').add('#triangle_down1').hide();
                    $('#select').css('background','#ecf0f1');
                    $('#select').css('color','#1169ff');
                    $('#triangle_down2').add('#triangle_down3').show();
                });

            })
#subscribe p{
text-align:center;
}
#subscribe input {
background: rgba(255, 255, 255, 0.52);
color: #666666;
vertical-align: middle;
width: 593px;
border: 1px solid rgba(255, 255, 255, 0.76);
padding: 0 10px;
height: 60px;
	font-size: 20px;
	outline: 0;
}
#subscribe input[type="submit"]{
background: rgb(255, 135, 19);
color: #ecf0f1;
/*width: auto;*/
padding: 14px 25px;
cursor: pointer;
margin-left: 50px
font-weight: bold; 
height: 60px;
display: inline-block;
border: 2px solid;
	font-size: 20px;
	outline: 0;
}

#subscribe button[id="select"],[id="select1"]{
background: #ecf0f1;
	width: 370px;
	height: 60px;
	/*padding-left: 100px;*/
	/*padding-right: 100px;*/
	padding: 0 10px;
	vertical-align: middle;
	font-size: 20px;
	outline: 0;
	color: #1169ff;
	border: 2px solid;
	text-align:center;

}

#subscribe input[id="main"] {
	width: 150px;
	outline: 0;
}
#triangle_down {

	position:absolute;
    width: 0;
    height: 0;
    border-top: 15px solid #1169ff;
    border-left: 9px solid transparent;
    border-right: 9px solid transparent;
	top:125px;
    left:90px;

}

#triangle_down1 {

	position:absolute;
    width: 0;
    height: 0;
    border-top: 20px solid #ecf0f1;
    border-left: 11px solid transparent;
    border-right: 11px solid transparent;
	top:125px;
    left:88px;

}
#triangle_down3 {

	position:absolute;
    width: 0;
    height: 0;
    border-top: 15px solid #1169ff;
    border-left: 9px solid transparent;
    border-right: 9px solid transparent;
	top:125px;
    left:464px;

}

#triangle_down2 {

	position:absolute;
    width: 0;
    height: 0;
    border-top: 20px solid #ecf0f1;
    border-left: 11px solid transparent;
    border-right: 11px solid transparent;
	top:125px;
    left:462px;

}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="subscribe">
                <form action="" method="post" onsubmit="">
                    <p>

                        <button type="button" id="select">Acheter</button>
                        <button type="button" id="select1">Louer</button>

                    </p>


                  <!-- Using 2 traingles to achieve border outline :) -->
                    <i id="triangle_down1" style="display: none"><i></i></i>
                  <i id="triangle_down" style="display: none"><i></i></i><br/>

                    <!--Louer triangles -->
                  <i id="triangle_down2" style="display: none"><i></i></i>
                  <i id="triangle_down3" style="display: none"><i></i></i><br/>

                    <div></div>

                    <p><input name="" placeholder="Entrer une ville au Maroc" type="text" id="landing-entry"/>
                        <a href="/results"> <input type="submit" id="main" value="Search"/></a>
                    </p>
                </form>

【讨论】:

  • 伙计们感谢大家的帮助,尤其是@jdlam,您对使用切换的建议有效,我还添加了一个 if 子句来检查天气另一个向下箭头显示使用切换的内联样式“显示”然后然后切换箭头,代码完美运行:D [link] (jsfiddle.net/agayn7yn/3)
【解决方案2】:

主要问题是您在使用.show() 的同时使用.addClass('hidden')

jQuery 在显示、隐藏和切换方面有点变化无常,但它们在该元素上强加了内联样式到 display: hiddendisplay: show。您的“隐藏”类被 jQuery 放置的行内样式覆盖。

在展示和隐藏事物时保持一致。在线条样式中使用,例如添加/删除“隐藏”或“显示”类,或使用 jQuery 中的 .show().hide().toggle() 函数。

我清理了代码,并将其全部放入 jsfiddle。希望这有助于https://jsfiddle.net/agayn7yn/

【讨论】:

  • 非常感谢它对箭头有用..但是 select1 的背景颜色在单击 select 时没有改变,但这不是我修复的问题..无论如何谢谢
  • 没问题@EdwardOkech,一定要投票并接受我的回答:)
【解决方案3】:

你没有隐藏三角形 div,你只是添加了一个“隐藏”类,它实际上并没有应用任何 css 属性。

你想使用hide()而不是addClass('hidden')

这将使用内联样式来显示/隐藏 div,从而确保最高级别的 css 特异性

【讨论】:

    猜你喜欢
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多