2016-01-21 3 views
2

Привет, ребята, мне очень нужна ваша помощь. У меня есть две кнопки на веб-странице, когда нажимается кнопка 1, а стрелка появляется под ней, а цвет фона кнопки изменяется, когда кнопка2 нажата одинаково, применяется, но стрелка внизу кнопки1 исчезает, а цвет фона меняется.Скрытие и изменение элементов div в JQuery

Я реализовал большинство этих свойств, но я не могу понять, почему после нажатия кнопки button2, возвращаясь к кнопке 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; 
 
\t font-size: 20px; 
 
\t 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; 
 
\t font-size: 20px; 
 
\t outline: 0; 
 
} 
 

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

 
} 
 

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

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

 
} 
 

 
#triangle_down1 { 
 

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

 
} 
 
#triangle_down3 { 
 

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

 
} 
 

 
#triangle_down2 { 
 

 
\t position:absolute; 
 
    width: 0; 
 
    height: 0; 
 
    border-top: 20px solid #ecf0f1; 
 
    border-left: 11px solid transparent; 
 
    border-right: 11px solid transparent; 
 
\t 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>

Благодаря

+0

у вас есть codepen или скрипку для этого? Кроме того, похоже, что вы никогда не войдете в условие 'else if', потому что ваш' if' всегда будет оценивать true, потому что он вернет объект jquery –

+1

, который вы не включили jquery в свой фрагмент, также выглядит jquery toggle было бы лучше, назад в mo – Billy

+0

@Billy работает с meteor.js JQuery уже включен в него. –

ответ

0

Основная проблема заключается в том, что вы используете .addClass('hidden') при использовании .show()

JQuery аа немного непостоянный, когда речь идет, чтобы показать, скрыть, и переключать, но они накладывают встроенный стиль на этот элемент либо display: hidden, либо display: show. Ваш класс «скрытый» переопределяется стилем в строке, помещенным jQuery.

Просто будьте последовательны, когда вы показываете и скрываете вещи. Либо используйте стили линий, например, добавление/удаление классов «скрытых» или «показанных», либо используя функции .show(), .hide() и .toggle() из jQuery.

Я очистил код и поместил все это в jsfiddle. Надеюсь, это поможет. https://jsfiddle.net/agayn7yn/

+0

Спасибо, что это сработало для стрелок ..но цвет фона для select1 не меняется, когда нажимается кнопка select, но это не проблема. У меня исправлено. Ну, спасибо –

+0

Без проблем @EdwardOkech, просто обязательно повысьте и примите мой ответ :) – jdlam

0

это делает, посмотрите на jquery toggle или другие способы сделать это, так как ваш код очень сложно работать с мосом. добавил $('#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; 
 
\t font-size: 20px; 
 
\t 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; 
 
\t font-size: 20px; 
 
\t outline: 0; 
 
} 
 

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

 
} 
 

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

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

 
} 
 

 
#triangle_down1 { 
 

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

 
} 
 
#triangle_down3 { 
 

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

 
} 
 

 
#triangle_down2 { 
 

 
\t position:absolute; 
 
    width: 0; 
 
    height: 0; 
 
    border-top: 20px solid #ecf0f1; 
 
    border-left: 11px solid transparent; 
 
    border-right: 11px solid transparent; 
 
\t 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>

+0

Ребята благодарю вас за вашу помощь, особенно @jdlam, ваше предложение об использовании toggle works, я также добавил предложение if, чтобы проверить погоду, другая стрелка вниз показывает, используя «шоу» inline-стиля toggle, а затем переключает стрелку и код отлично работает: D [link] (https://jsfiddle.net/agayn7yn/3/) –

0

Вы не скрываете треугольники div, вы просто добавляете класс 'hidden', который фактически не применяет никаких свойств css.

вместо addClass('hidden') вы хотите использовать hide()

это будет использовать встроенный стиль, чтобы показать/скрыть DIV, который страхует самый высокий уровень Css специфичности

Смежные вопросы