获取动态生成的 ID
Getting a Dynamically generated ID
我有一个复选框,其中的值是从我的数据库中的数据动态填充的。我想根据单击的复选框执行进一步的查询,但是每当我单击任何复选框时,我似乎都无法检索 ID。我不想使用提交按钮。如何实现?
我的代码。
function getDBlist() {
global $link;
$qry = ("SHOW DATABASES");
$res = mysqli_query ( $link, $qry );
while ( $row = mysqli_fetch_assoc ( $res ) ) {
echo '<input type="checkbox" name="db" id="' . $row ['Database'] . '" value="' . $row ['Database'] . '" />';
echo $row ['Database'];
}
}
getDBlist ();
我的脚本
$(document).on("change","checkbox", function() {
var val = $(this).val();
var id = this.id;
alert(val, id);
});
当我单击任何复选框时,我没有收到包含值或 ID 的警报。我在这里做错了什么?难道是因为我动态生成的ID?
查看呈现标记的 echo 语句,您根本没有指定 class="checkbox"
:
echo '<input type="checkbox" name="db" id="' . $row ['Database'] . '" value="' . $row ['Database'] . '" />';
由于您还没有添加它,因此指向 $(".checkbox")
将不起作用。您需要将它们添加到回显中。
您的 jquery 选择器正在寻找带有 css class `复选框'的元素,或者将此 class 添加到您的 html:
echo '<input type="checkbox" class="checkbox"...';
或删除选择器中的句点,以定位所有复选框元素:
$("checkbox").on("change", function() {
var val = $(this).val();
var id = this.id;
alert(val, id);
});
试试这个
$("body").on("change",".checkbox", function() {
var val = $(this).val();
var id = $(this).attr("id");
alert(val, id);
});
要将更改事件绑定到动态生成的复选框,您需要像下面这样委托 change
事件
$(document).on("change",".checkbox", function() {
var val = $(this).val();
var id = this.id;
alert(val, id);
});
以上代码适用于现有复选框和动态创建的复选框。这里 document
对象将使用 class="checkbox"
将更改事件委托给复选框
同样如@Ghost 所述,您需要将 class 添加到动态生成的复选框中,如下所示
echo '<input type="checkbox"
name="db" id="' . $row ['Database'] . '"
value="' . $row ['Database'] . '"
class="checkbox"/>';
我有一个复选框,其中的值是从我的数据库中的数据动态填充的。我想根据单击的复选框执行进一步的查询,但是每当我单击任何复选框时,我似乎都无法检索 ID。我不想使用提交按钮。如何实现?
我的代码。
function getDBlist() {
global $link;
$qry = ("SHOW DATABASES");
$res = mysqli_query ( $link, $qry );
while ( $row = mysqli_fetch_assoc ( $res ) ) {
echo '<input type="checkbox" name="db" id="' . $row ['Database'] . '" value="' . $row ['Database'] . '" />';
echo $row ['Database'];
}
}
getDBlist ();
我的脚本
$(document).on("change","checkbox", function() {
var val = $(this).val();
var id = this.id;
alert(val, id);
});
当我单击任何复选框时,我没有收到包含值或 ID 的警报。我在这里做错了什么?难道是因为我动态生成的ID?
查看呈现标记的 echo 语句,您根本没有指定 class="checkbox"
:
echo '<input type="checkbox" name="db" id="' . $row ['Database'] . '" value="' . $row ['Database'] . '" />';
由于您还没有添加它,因此指向 $(".checkbox")
将不起作用。您需要将它们添加到回显中。
您的 jquery 选择器正在寻找带有 css class `复选框'的元素,或者将此 class 添加到您的 html:
echo '<input type="checkbox" class="checkbox"...';
或删除选择器中的句点,以定位所有复选框元素:
$("checkbox").on("change", function() {
var val = $(this).val();
var id = this.id;
alert(val, id);
});
试试这个
$("body").on("change",".checkbox", function() {
var val = $(this).val();
var id = $(this).attr("id");
alert(val, id);
});
要将更改事件绑定到动态生成的复选框,您需要像下面这样委托 change
事件
$(document).on("change",".checkbox", function() {
var val = $(this).val();
var id = this.id;
alert(val, id);
});
以上代码适用于现有复选框和动态创建的复选框。这里 document
对象将使用 class="checkbox"
同样如@Ghost 所述,您需要将 class 添加到动态生成的复选框中,如下所示
echo '<input type="checkbox"
name="db" id="' . $row ['Database'] . '"
value="' . $row ['Database'] . '"
class="checkbox"/>';