Я работаю над библиотекой JavaScript chatbot. Некоторые команды меняют доступные кнопки (например, когда вы запускаете «тестовую команду», эти опции становятся доступными: да, нет, & отмена)Как заставить эти кнопки JavaScript работать?
Когда вы нажимаете «Отменить», они возвращают оригинальные кнопки, как я предполагал, но они не являются Нельзя? Как я могу сделать их повторно нажатыми?
var commands = [
"test command",
"clear messages"
];
function message(status, message) {
if (status == "sent") {
$(".messages").append("<div class='message sent'><p>" + message + "</p></div>");
} else {
$(".messages").append("<div class='message from'><p>" + message + "</p></div > ");
}
$(".messages").animate({
scrollTop: $('.messages').prop("scrollHeight")
}, 500);
}
function buttons(commands) {
$(".buttons").html("");
$.each(commands, function(index, value) {
var id = value.split(" ").join("-");
$(".buttons").append('<div class="button" id ="command_' + id + '">' + value + '</div>');
});
}
buttons(commands);
$("#command_test-command").click(function() {
message("sent", "test command");
var parameters = [
"yes",
"no",
"cancel"
];
buttons(parameters);
$("#command_yes").click(function() {
message("sent", "yes");
message("from", "you said yes");
});
$("#command_no").click(function() {
message("sent", "no");
message("from", "you said no");
});
$("#command_cancel").click(function() {
message("sent", "cancel");
message("from", "you said cancel");
buttons(commands);
});
});
$("#command_clear-messages").click(function() {
$(".messages").html("");
});
Удаляется мой предыдущий комментарий, потому что я потерял из виду вопрос для момент, но вы действительно уничтожаете элементы и создаете новые, не применяя при этом никакой привязки обработчика. Это происходит только в обработчике 'cancel'. –
Так зачем же все это разрушать и воссоздавать элементы? Похоже, что более практичный подход состоял бы в создании двух групп элементов, 'команд' и' параметров', и просто показывать/скрывать каждую группу по мере необходимости. Затем вы создаете их только один раз и связываете с ними обработчики событий. –
Справедливости ради, это мой первый проект JavaScript. Я действительно не знаю, как делать то, что вы предлагаете. Спасибо, хотя я попытаюсь изучить ваши предложения. –