Usar jQuery en un elemento insertado desde php подставляют ajax

Он insertado ООН выбирает de ООН php, подставляет ajax en otro php que es el index. Este es el index de donde cojo los dato.

<?php 
include 'conexion.php';
$msg ="";
$tipo= $_POST['tipo']??"";
$sql = "SELECT marca.idmarca as id,marca.marca as marca
from marca, producto, modelo
where producto.modelo = modelo.idmodelo
and modelo.marca = marca.idmarca
and producto.tipo = '$tipo'";
$consulta = $conn->query($sql);
$msg .= "<select id=\"marc\">";
$msg .= "<option value=\"\">Selecciona una marca</option>";

while($fila = $consulta->fetch()){
$msg .= "<option value=\"".$fila['id']."\">".$fila['marca']."</option>";

}
$msg .= "</select>";
echo $msg;
?>

Y al coger el id del select en el jquery не я hace nada. El обвивают de jQuery esta en el index.php.

//Codigo jquery

$("#marc").change(function(){
 var tipo = $(this).val();
 alert(tipo);

});
2
задан 13.03.2017, 17:58
2 ответа

Когда относятся друг к другу элементы dinÃ: обезьяны имеют быть использованными on, уже будьте для clik, change, и т.д.

Пытается используя:

$("#marc").on('change', function(){
  var tipo = $(this).val();
  alert(tipo);
});
-2
ответ дан 24.11.2019, 10:37
  • 1
    Это то же самое, что и он сделал OP. jQuery, позволяет тебе делать закладки вместо .on. – gugadev 13.03.2017, 18:00
  • 2
    @GustavoGarcí в, не, это не то же самое. jQuery используй различные функции на основании DOM. В этом случае неудар в лунку не был создан, когда DOM terminó того, чтобы быть загруженным, тогда jQuery не моги находить элемент с простым change. – user2930137 13.03.2017, 18:02
  • 3
    оно не я не функционирует также с on. – Borja Sanchez 13.03.2017, 18:04
  • 4
    @user2930137 Это очевидное, но в ningú n момент я имею в виду это. То, что я говорю, состоит в том, что .change - закладка для .on('change'). Консультируй documentació n для того, чтобы ты вышел из сомнений: This method is в shortcut for .on (" change" handler) . – gugadev 13.03.2017, 18:07
  • 5
    но поскольку он diná обезьяна select должна размещать себе on. Ты можешь тестировать это. – Acd 13.03.2017, 18:15

Проблема состоит в том, что id marc не загружен в DOM, когда ты хочешь использовать твой funci¦n:

// No sabe la id #marc
$('#marc').on('change', function(){
  
  var tipo = $(this).val();
  alert(tipo);  
});

function ajaxSelect(){
  
  $('body').append('<select id="marc"><option value="">Selecciona</option><option value="1">1</option><option value="2">2</option></select>');
}

$('button').click(ajaxSelect);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button>Crear Ajax Select</button>

то, что ты можешь делать, одна то, что сказало тебе @GustavoGarcia в commentario , или también ты можешь delegar событие:

// Delegamos el evento
$(document).on('change', '#marc', function(){
  
  var tipo = $(this).val();
  console.log(tipo);
  
});

function ajaxSelect(){
  
  $('body').append('<select id="marc"><option value="">Selecciona</option><option value="1">1</option><option value="2">2</option></select>');
}

$('button').click(ajaxSelect);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button>Crear Ajax Select</button>
1
ответ дан 24.11.2019, 10:37
  • 1
    Это правильный ответ. delegació n handler всегда будешь функционировать, не прибегая к условию помещения элемента select в дуро – amenadiel 14.03.2017, 01:08