У меня есть прослушиватель событий в таблице, чтобы указать текущий идентификатор строки при нажатии. Он отлично работает при первом щелчке строки, но когда ajax запускается после изменения выпадающего списка и обновляется таблица, прослушиватель событий больше не работает. Почему?
исходный файл:
<?php
//load_data_select.php
$connect = mysqli_connect("localhost", "re", "", "test");
function fill_brand($connect)
{
$output = '';
$sql = "SELECT * FROM brand";
$result = mysqli_query($connect, $sql);
while($row = mysqli_fetch_array($result))
{
$output .= '<option value="'.$row["brand_id"].'">'.$row["brand_name"].'</option>';
}
return $output;
}
function fill_product($connect)
{
$output = '<style>
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
</style>
<table id="mytable" name="table_1">
<tr>
<th>ID</th>
<th>PRODUCT</th>
<th>BRAND ID</th>
</tr>';
$sql = "SELECT * FROM product";
$result = mysqli_query($connect, $sql);
while($row = mysqli_fetch_array($result))
{
$output .= '<div class="col-md-3">';
$output .= '<tr>
<td id="'.$row["product_id"].'">'.$row["product_id"].'</td>
<td id="'.$row["product_id"].'">'.$row["product_name"].'</td>
<td id="'.$row["product_id"].'">'.$row["brand_id"].'</td>
</tr>';
}
$output .= '</table>';
return $output;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>ok</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
</head>
<body>
<br /><br />
<div class="container">
<h3>
<select name="brand" id="brand">
<option value="">Show All Product</option>
<?php echo fill_brand($connect); ?>
</select>
<br /><br />
<div class="row" id="show_product">
<?php echo fill_product($connect);?>
</div>
</h3>
</div>
</body>
</html>
<script>
$(document).ready(function(){
var table = document.querySelector('#mytable');
// listen for a click
table.addEventListener('click', function (ev) {
var serviceID = ev.target.id;
alert(serviceID);
})
$('#brand').change(function(){
var brand_id = $(this).val();
$.ajax({
url:"load_data.php",
method:"POST",
data:{brand_id:brand_id},
success:function(data){
$('#show_product').html(data);
}
});
});
});
</script>
, а затем второй файл (load_data. php) для обновления sh таблицы:
<?php
//load_data.php
$connect = mysqli_connect("localhost", "re", "", "test");
$output = '';
if(isset($_POST["brand_id"]))
{
if($_POST["brand_id"] != '')
{
$sql = "SELECT * FROM product WHERE brand_id = '".$_POST["brand_id"]."'";
}
else
{
$sql = "SELECT * FROM product";
}
$result = mysqli_query($connect, $sql);
$output .= ' <style>
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
</style>
<table id="mytable">
<tr>
<th>ID</th>
<th>PRODUCT</th>
<th>BRAND ID</th>
</tr>';
while($row = mysqli_fetch_array($result))
{
$output .= ' <tr>
<td id="'.$row["product_id"].'">'.$row["product_id"].'</td>
<td id="'.$row["product_id"].'">'.$row["product_name"].'</td>
<td id="'.$row["product_id"].'">'.$row["brand_id"].'</td>
</tr>'; }
$output .= '</table>';
echo $output;
}
?>