Как добавить динамический контент в div, сгенерированный динамически? - PullRequest
0 голосов
/ 26 марта 2012

В основном я проверяю форму, я собираю сообщения об ошибках и добавляю их в div, сгенерированный динамически.Теперь я не могу добавить эти сообщения в этот раздел. Вот что я сделал

//generates a div onclick of submit button
$("body").append("<div class='overlay'><div class='errorContainer'>.html(errorMsg)</div><div>`<a href='javascript:void(0);' class='cross'>X</a><div></div>");

.html(errorMsg), это вызывает ошибку / неверно

function closeErrorBox() {
            var errorMsg = "";
                var ferrorMsg =  "Please say your first name" + "<br>";
                var aerrorMsg = "Please type address" + "<br>";
                var eerrorMsg = "Please type a valid email Address" + "<br>"
                if($("#name").val() == "") {
                    errorMsg += ferrorMsg;
                }
                if($("#address").val() == "") {
                    errorMsg += aerrorMsg;
                }
                if($("#email").val() == "") {
                    errorMsg += eerrorMsg;
                }

                $(".errorContainer").html(errorMsg);


                $(".overlay").remove();
                }

Ответы [ 2 ]

1 голос
/ 26 марта 2012

.errorContainer div находится внутри .overlay div.Когда вы удаляете оверлей в конце своей функции, errorContainer также удаляется.Кроме этого, похоже, что .html(errorMsg) работает нормально (если оно по-прежнему вызывает ошибку, пожалуйста, укажите, что идет не так).

Перечитав ваш вопрос, я не смог понять поток вашей программы: выдобавить этот div, когда ошибка уже известна, и закрыть его, когда вы нажмете «X»?Если это так, я бы предложил сделать что-то вроде этого:

var errorMsg = "";
var ferrorMsg =  "Please say your first name" + "<br>";
var aerrorMsg = "Please type address" + "<br>";
var eerrorMsg = "Please type a valid email Address" + "<br>"
if($("#name").val() == "") {
    errorMsg += ferrorMsg;
}
if($("#address").val() == "") {
    errorMsg += aerrorMsg;
}
if($("#email").val() == "") {
    errorMsg += eerrorMsg;
}

// Adapting Diego's answer:
$("<div class='overlay'><div class='errorContainer'></div><div><a href='javascript:void(0);' class='cross'>X</a><div></div>")
    .appendTo($("body"))
    .find(".errorContainer")
        .html(errorMsg)
        .end()
    .find(".cross")
        .click(function(e) {
            e.preventDefault();
            $(this).closest(".overlay").remove();
        });
0 голосов
/ 26 марта 2012

Я думаю, вы имели в виду:

//generates a div onclick of submit button
$("body").append("<div class='overlay'><div class='errorContainer'></div><div><a href='javascript:void(0);' class='cross'>X</a><div></div>").find(".errorContainer").html(errorMsg);
...