Я пытаюсь сделать зависимые элементы, созданные динамически: 2 выбора и один флажок.
Выбирает: subtitulo создается после и зависит от значения titulo
Флажок создается после и зависит от значения subtitulo
Каждый элемент содержится в своем собственном элементе, который я создаю во время выполнения для функций resultsTitulo, resultsSubtitulo, resultsPuntos. Для каждого я определяю, если это первый раз, когда он создается, для создания, если это не так, я сохраняю, но уничтожаю структуру элемента (то есть. $ ("# Titulo"). ReplaceWith ('');) и воссоздай это снова. Все элементы содержатся в другом главном, называемом «информация» (HTML-файл)
$(document).ready(function())
инициализирует первый выбор и обнаруживает изменения в состоянии всех элементов.
У меня следующие проблемы:
1) Я хочу иметь возможность обнаруживать изменения событий в зависимости от их типа элемента, т.е. $("div.info").change(function () -> $("#titulo").change(function ()
Однако это не работает.
2) Я хочу иметь возможность добавлять структуры не внутри, а внутри
$("div.info").append("<div class=\"tituloD\">");
$("div.info").append("Titulo: "); -> $("div.titulo").append("Titulo: ");
Это тоже не работает.
3) Я не знаю, будет ли флажок создан хорошо ...
var tituloCreado = "No";
var subtituloCreado = "No";
var puntosCreados = "No";
var temp = 0;
// Esta funcion recoge el json data de titulos y lo imprime en pantalla
function resultsTitulo(data) {
$("div.info").html('').show();
//Si el título no se ha creado antes, se crea la estructura
if(tituloCreado == "No"){
$("div.info").append("<div class=\"tituloD\">");
$("div.info").append("Titulo: ");
$("div.info").append("<select id=\"titulo\">");
$("#titulo").append("<option value='0'> Elige un titulo");
//Rellenar el titulo con las posibles opciones
$.each(data,function(index,value) {
$("#titulo").append('<option value="'+data[index].id+'">' + data[index].nombre + '</option>');
});
$("div.info").append("</select>");
$("div.info").append("</div>");
tituloCreado = "Si";
}
else{
//Vaciar estructura
$("#titulo").replaceWith('');
//Crear estructura de nuevo
$("div.info").append("<select id=\"titulo\">");
$("#titulo").append("<option value='0'> Elige un titulo");
//Rellenar el titulo con las posibles opciones
$.each(data,function(index,value) {
$("#titulo").append('<option value="'+data[index].id+'">' + data[index].nombre + '</option>');
});
$("div.info").append("</select>");
}
$("div.info").append("<br />");
$("div.info").append("<br />");
}
// Esta funcion recoge el json data de subtitulos y lo imprime en pantalla
function resultsSubtitulo(data) {
//Si el subtítulo no se ha creado antes, se crea la estructura
if(subtituloCreado == "No"){
$("div.info").append("<div class=\"subtituloD\">");
$("div.info").append("Subtitulo: ");
$("div.info").append("<select id=\"subtitulo\">");
$("#subtitulo").append("<option value='0'> Elige un subtitulo");
$.each(data,function(index,value) {
$("#subtitulo").append('<option value="'+data[index].id+'">' + data[index].nombre + '</option>');
});
$("div.info").append("</select>");
$("div.info").append("</div>");
subtituloCreado = "Si";
}
else{
//Vaciar estructura
$("#subtitulo").replaceWith('');
//Crear estructura de nuevo
$("div.info").append("<select id=\"subtitulo\">");
$("#subtitulo").append("<option value='0'> Elige un subtitulo");
$.each(data,function(index,value) {
$("#subtitulo").append('<option value="'+data[index].id+'">' + data[index].nombre + '</option>');
});
$("div.info").append("</select>");
}
}
// Esta funcion recoge el json data de puntos importantes y lo imprime en pantalla
function resultsPuntos(data) {
//$("div.info").append("");
//Si el punto no se ha creado antes, se crea la estructura
if(puntosCreados == "No"){
$("div.info").append("<div class=\"puntosD\">");
$("div.info").append("Puntos importantes: ");
$.each(data,function(index,value) {
$("div.info").append('<input type=\"checkbox\" name="'+data[index].id+'" value="'+data[index].nombre+'"> '+data[index].nombre);
});
$("div.info").append("</div>");
puntosCreados = "Si";
}
else{
//Vaciar estructura
$("#myCheckbox").replaceWith('');
//Crear estructura de nuevo
$.each(data,function(index,value) {
$("div.info").append('<input type=\"checkbox\" name="'+data[index].id+'" value="'+data[index].nombre+'"> '+data[index].nombre);
});
}
}
//INICIO
$(document).ready(function(){
$.ajax({
data: "",
type: "GET",
dataType: "json",
url: "recogeTitulo.php",
success: function(data){
resultsTitulo(data);
}
});
$("div.info").change(function (){
$("div.info option:selected").each(function () {
var value = $(this).val();
$.ajax({
data: "valor="+value,
type: "GET",
dataType: "json",
url: "recogeSubtitulo.php",
success: function(data){
resultsSubtitulo(data);
}
});
});
});
});