2016-10-25 3 views
-4

У меня есть кнопка, когда пользователь нажимает на нее, она предназначена для отображения первой, указанной в моей форме. Я использовал jQuery toggle, но когда кнопка нажата, ничего не происходит, что я делаю неправильно?скрыть и показать с jQuery, не работающим на кнопке

$("#chnagecar").click(function() { 
 
    $("#car").toggle(); 
 
});
#changecar{ 
 
    display:none: 
 
}
<p id ="news">Hello User<input type="button" id="changecar" value="Whst car do you have"></p> 
 
<div id="car"> 
 
    <label required>Do you know what car you have? </label> 
 
    <br> 
 
    <br> 
 
    <input type="radio" id="yes" value="yes" />Yes 
 
    <input type="radio" id="no" value="no" />No 
 
    <br> 
 
    <br> 
 
</div>

+2

Обязательный недействительный атрибут на '

+2

Кроме того, у вас есть опечатка в вашем id '$ (" # chnagecar "). Click (function() {' должен быть '$ (" # changecar ") .click (function() {' – Roberrrt

+0

Ваш Jquery читает' $ ("# chnagecar"). click (function() 'заметьте опечатку. Должно быть, # changecar' –

ответ

1

В дополнение к указанным выше замечаний, я также хотел бы предложить удаления : из свойства дисплея. Как указано в Firefox CSS Syntax Rules, точка с запятой не требуется, но является хорошей практикой.

+0

Это комментарий, а не ответ. Также текущее ':' фактически отключает правило. ot правильно разобрался – Roberrrt

+1

@Roberrrt, я понял, что это будет лучше подходит для комментария, но моя репутация не совсем там, чтобы его создать. –

2

Есть несколько проблем с кодом:

  • <label> не может иметь атрибут required.
  • Ваш jQuery содержит опечатку chnagecar > changecar
  • Ваш CSS-дисплей: none: есть a: вместо a; в конце.
  • Вы пытаетесь включить встроенный стиль HTML вместо CSS.

Хорошо, так что теперь, когда мы

HTML:

<p id="news">Hello User<input id="changecar" type="button" value= 
"What car do you have"></p> 

<div id="car"> 
    <label>Do you know what car you have?</label><br> 
    <br> 
    <input id="yes" type="radio" value="yes">Yes <input id="no" type="radio" 
    value="no">No<br> 
    <br> 
</div> 

CSS:

.hidden { 
    display: none; 
} 

JS:

$("#changecar").click(function() { 
    $("#car").toggleClass('hidden'); 
}); 

Теперь мы имеющий класс hidden, который «скрывает» элемент с дисплеем: none; который переключается при нажатии кнопки.

Работая codepen: http://codepen.io/robertspier/pen/bwkLvQ

+0

нужно сделать это в jQuery, и я исправил свой css, но он все еще не работает – Rebekah

+0

Это .. jQuery? – Roberrrt

+1

oh жаль, что так оно и есть, смотрел на этот код, который все начинает выглядеть одинаково. – Rebekah

0

Основной корень scaue это у вас есть неправильно написано имя ID Div в 'changeCar' как 'chnageCar'.

$("#changecar").click(function() { 
      $("#car").toggle(); 

     });` 

Выше будет работать.

Кроме того, есть некоторые предложения по улучшению кода;

  • В стилях CSS в конце changeCar ​​ID не должно быть двоеточия.

#changecar{ display:none;}

  • Устанавливая дисплей: никто не прячут кнопку и она не видна пользователю. Я думаю, что стиль #changecar{ display:none;} здесь не требуется, и вы можете удалить его.
  • В метке "required" недействительный атрибут.

Адрес JSFiddle link.

+0

Вы не публикуете ничего нового. – Roberrrt

+0

@Roberrrt Вы предлагаете добавить новый класс CSS с именем 'hidden' и .toggleClass ('hidden' '), и в моем решении не требуется добавлять новый класс и сам toggle() будут работать, если вышеуказанные предложения будут выполнены. –

+0

Материал, который «работает», не всегда является лучшей практикой. Отличие вашей логики от вашего стиля - это то, что важно для вас всегда должны применяться в вашей работе, насколько это возможно. – Roberrrt

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