【发布时间】:2021-03-18 18:36:33
【问题描述】:
我正在创建一个使用 PHP 和 jQuery 在 MySQL 表上实现 CRUD 的小项目。 表格以这种方式注入到布局中:
<?php
require '../connect.php';
$sql = "SELECT id, countryName, shortDesc FROM countries";
$result = mysqli_query($conn, $sql);
echo "<table>
<tr>
<th>Id</th>
<th>Country</th>
<th>Short description</th>
<th>Actions</th>
</tr>";
while ( $row = $result->fetch_assoc() ) {
echo "<tr>
<td>".$row["id"]."</td>
<td>".$row["countryName"]."</td>
<td>".$row["shortDesc"]."</td>
<td>
<button id='show' value=".$row["id"].">Show</button>
<button id='edit' value=".$row["id"].">Edit</button> // value field added to pass id data
<button id='delete' value=".$row["id"].">Delete</button>
</td>
</tr>";
}
echo "</table>";
$conn->close();
?>
我向按钮添加了值字段,因为我正在考虑使用此属性将行的 ID 传递给应该加载 EDIT 页面的 JS 脚本。
我使用事件委托来访问按钮,但之后我不知道如何访问按钮的 value 属性。
在我的 jQuery 脚本文件中,我编写了这段代码来测试:
// EDIT
$('#content').on('click', '#edit', function() { // EVENT DELEGATION
// THIS DOESN'T WORK
var id = $('#content').children('#edit').attr("value");
alert( id ); // RETURN UNDIFINED
});
我试图访问内容元素的一个属性并且它工作,所以问题应该是我不能像那样访问他的孩子(以类似于使用 .on() 的偶数委托的方式)。
可能会有比这更优雅的方法来解决问题,但同时我想了解如何访问 AJAX 注入的 HTML 元素的属性!
【问题讨论】:
-
var id = $('#content').children('#edit')attr("value");你错过了“。”在 attr 之前?
-
不,我只是把它复制错了,因为我现在正试图在我的代码上更改它,对不起!
-
不要对多个元素使用相同的
id,这就是类的用途。 -
您在 WHILE LOOP 中创建了 3 个按钮,它们都具有相同的 ID
-
您可以使用
var id = $(this).attr("value");,因为jQuery 将按钮设置为函数的上下文。此外,id应该在整个文档中是唯一的,而不仅仅是在其 HTML 兄弟中。
标签: javascript php jquery mysql ajax