Показать и скрыть функции в Jquery

0

Я написал код в html -3 Div, который появляется после переключателей. Я хочу, чтобы щелчок на каждой кнопке отображал код, который находится в этой кнопке div, и будет скрывать оба других div.

Здесь код:

<html>
    <body>
        <div>
            <form id="A" method="get" action="form.php"> <fieldset>
             <legend> A </legend>

                <div id="Headline">Headline: </div>
                <div><input type="radio" name="B" value="B" onclick="functionb('b')">  <img class="photos" src="b.gif" alt="b"><br><div id="b>Show B</div>
                    <input type="radio" name="C" value="C" onclick="functionc('c')"><img class="photos" src="c.gif" alt="c"><br><div id="c">Show C</div>
                    <input type="radio" name="d" value="d" onclick="functiond('d')"><img class="photos" src="d.gif" alt="d"></div><br><div id="d">Show D</div>

             </fieldset>
        </form>
    </div>
  </body>
</html>

Я написал следующий код в JS файле (мне нужно поместить все скрипты в другой файл, который является html-one) только для первой кнопки:

       $(document).ready(function(){
          $("#b").click(function(){
            $("#b").show();
            $("#c").hide();
            $("#d").hide();
           });
       });

и он не делает действия, необходимые при нажатии первой кнопки... Будь рад получить любую помощь - спасибо!

  • 0
    Можете ли вы добавить больше деталей?
  • 2
    Этот код JS не имеет смысла; у вас нет ничего с id v или i в HTML выше.
Показать ещё 7 комментариев
Теги:

3 ответа

0
Лучший ответ

Похоже, есть несколько вещей, которые вам нужно решить. , ,

Во-первых, вы говорите, что вы нажимаете на переключатель и что он должен показывать связанный div и скрывать другие. Затем вы показываете этот раздел кода (добавленные мной комментарии):

$(document).ready(function() {
    $("#v").click(function() {  // This is the button click
        $("#v").show();         // This shows the related div
        $("#a").hide();         // This hides "other div" number 1
        $("#i").hide();         // This hides "other div" number 2
    });
});

Проблема в том, что вы ссылаетесь на переключатель с атрибутом id целевого элемента <div> ($("v")). Вам нужно ссылаться на радиокнопку иначе, например $("input[name='v']") (так как имена должны быть уникальными в форме). Это выбирает вход с атрибутом name, равным "v".

В конце концов, однако, вы должны, вероятно, сделать функцию общей, так что вам не нужно ссылаться на каждый переключатель. Например, вы можете сделать это, захватив все радио кнопки в форме. , , как это:

$("#A").find("input[type='radio']")

Это приведет к тому, что все входы радиокнопки будут записаны в форме "А". Затем вы можете прикрепить функцию щелчка к каждому из них (см. Ниже).

Во-вторых, я бы рекомендовал, чтобы все div были общим классом. Таким образом, вы можете привязать .hide() к общему классу, а не к отдельным id. Затем вы можете вернуться и показать конкретный <div> после того как все они были спрятаны первыми.

Используя два вышеприведенных предложения (и удалив часть вашего другого кода, просто чтобы упростить мой ответ... вы можете добавить его обратно в свой последний код :)), вот пример того, что может сработать для вас:

HTML

<form id="a" method="get" action="form.php">
    <input type="radio" name="b" value="b">
    <img class="photos" src="b.gif" alt="b"><br>
    <div id="b" class="subForm">Show B</div>

    <input type="radio" name="c" value="c">
    <img class="photos" src="c.gif" alt="c"><br>
    <div id="c" class="subForm">Show C</div>

    <input type="radio" name="d" value="d">
    <img class="photos" src="d.gif" alt="d"></div><br>
    <div id="d" class="subForm">Show D</div>
</form>

JS

$(document).ready(function(){
    $("#a").find("input[type='radio']").click(function() {
        $(".subForm").hide();
        $("#" + $(this).attr("name")).show();
    });
});

При таком подходе вы собираете все радиокнопки в форме и присоединяете к ним общую функцию "щелчка". Функция будет скрыть все дивы (ныне маркированных с общим классом "подчиненного"), а затем покажет DIV, который имеет id атрибут, который соответствует name атрибута радио - кнопка, которая была нажата.

  • 0
    Большое спасибо!!! работает как шарм :)
0

попробуйте получить доступ к элементу по атрибуту name:

$('input[name=B]').click(function(){// your action here});

или если вам нужно получить доступ по id, добавьте атрибут id:

<input type="radio" id="B" name="B" value="B" onclick="functionb('b')"><img class="photos" src="b.gif" alt="b"><br /><div id="b" class="ButtonDisplayDiv">Show B</div>
0

Установите общий класс в ваших "дисплеях дисплея кнопок",

<div>
  <input type="radio" name="b" value="B"><img class="photos" src="b.gif" alt="b"><br /><div id="b" class="ButtonDisplayDiv">Show B</div>
  <input type="radio" name="c" value="C"><img class="photos" src="c.gif" alt="c"><br /><div id="c" class="ButtonDisplayDiv">Show C</div>
  <input type="radio" name="d" value="D"><img class="photos" src="d.gif" alt="d"><br /><div id="d" class="ButtonDisplayDiv">Show D</div>
</div>

Затем для вашего обработчика событий переключателя

$('input[type="radio"]').change(function () {
   $('.ButtonDisplayDiv').hide(); //hide all the ButtonDisplayDiv Class Elements
   $('#' + $(this).attr('name')).show;  //show the associated selected div
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню