WedX - журнал о программировании и компьютерных науках

Динамический аккордеон Jquery: цвет заголовка панели только с новой добавленной панелью?

У меня есть динамический аккордеон jquery. У меня есть 2 поля вверху. После того, как оба поля заполнены и пользователь нажимает «кнопку добавления вопроса», вверху добавляется новая панель с синим заголовком. По мере того, как я продолжаю добавлять вопросы, появляется все больше и больше панелей, а их заголовки также выделяются синим цветом. Я добавил код для синих заголовков в свой раздел jquery, где я добавляю свои панели.

У меня также есть кнопка отправки, которая обновляет страницу и возвращает страницу по умолчанию (поэтому все предыдущие панели теряются).

Вот результат: https://jsfiddle.net/5gLb0cqx/

Мой вопрос таков: я пытаюсь сделать так, чтобы только вновь добавленная панель имела синий заголовок.

мой код выглядит следующим образом:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>jQuery UI Accordion - Default functionality</title>
  <link rel="stylesheet" href="https://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
  <script src="https://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
  <script>
  var counter = 2;

  $(function() {
    $("#accordion").accordion({
        collapsible: true,
        active: false,
        });

    function edit(){
    var text = $(this).siblings("input[type=text]").val();
    var sql = $(this).siblings('textarea').val();
    $("#input").val(text);
    $("#sql_code").val(sql);
    }
    $(":button").click(edit);

    $("#addAccordion").click( function() {
        var inputVal = $("#input").val();
        var sqlVal = $("textarea#sql_code").val();
        if (!sqlVal || !inputVal){
            return;
        }
        var newDiv = '<div><h3 style = "background:lightblue;">Question '+ counter +'</h3></div>';
        var content = '<div class = "new_panel"><label>'+inputVal+'</label><br><br><label for="in" name="question">Edit Question:</label> <input type="text" name = "question" value ="'+inputVal+'" /><br><br>'
        + ' <label name="SQL">Edit SQL code here:</label><textarea name = "code">'+sqlVal+'</textarea>' +
        '<br><br> <input type = "button" value = "Edit" ></input></div>';
        $("#accordion").prepend(newDiv +content) ;
        $("#accordion").accordion("refresh");
        counter++;
        $(":button").click(edit);
    });
  });
  </script>
</head>
<body>

<center>
<form id="myform">
    <label>Enter Question:</label>
    <input id="input" type="text" name = "questions"/>
    <br><br>
    <label>Enter SQL code here:</label>
    <textarea id="sql_code" name = "SQL_code"></textarea>
    <br><br>
    <input id = "submitbutton" type="submit" value="Submit"/>
    <input type = "button" id ="addAccordion" value = "Add Question" ></input>
</form>
</center>

<div id = "accordion">
    <h3> Question 1 </h3>
    <div>
        <form>
            Have you ever been tested for an STI?
            <br><br>
            <label for="in" name="question1">Edit Question:</label>
            <input type="text"/>
            <br><br>
            <label for="sql" name="SQL">Edit SQL code here:</label>
            <textarea></textarea>
            <br><br>
            <input type = "button" value = "Edit" ></input>
            </form>
    </div>

</div>
</body>
</html>

Я не знаю, как это сделать с моим текущим кодом.

Я думал каким-то образом перебрать панели аккордеона и найти самую новую добавленную панель, хотя я понятия не имею, как это сделать.

Может кто-нибудь может указать мне в правильном направлении или есть какие-либо предложения относительно того, как решить эту проблему?


Ответы:


1

демонстрация

Если у вас есть h3 только в заголовке каждой панели, просто добавьте одну строку в jQuery

$("#accordion").find("h3").not(":first").css({"background":"none"})

после добавления новой панели, ИЛИ

$("#accordion").find("h3").css({"background":"none"})

перед подготовкой.

11.01.2016

2

изменить некоторые jquery

var newDiv = '<div style="background:lightblue;"><h3 style="margin:2px 0 0;">Question '+ counter +'</h3></div>';

https://jsfiddle.net/5gLb0cqx/2/

11.01.2016
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]