获取动态生成的ID

时间:2015-03-23 10:47:45

标签: javascript php jquery 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吗?

4 个答案:

答案 0 :(得分:2)

查看渲染标记的echo语句,您根本没有指定class="checkbox"

echo '<input type="checkbox" name="db" id="' . $row ['Database'] . '"   value="' . $row ['Database'] . '" />';

由于您尚未添加,因此指向$(".checkbox")无法正常工作。你需要在echo中添加它们。

答案 1 :(得分:2)

要将更改事件绑定到动态生成的复选框,您需要委托change事件,如下所示

$(document).on("change",".checkbox", function() {
    var val = $(this).val();
    var id = this.id;
    alert(val, id);
});

以上代码适用于现有和动态创建的复选框。此处document对象会将更改事件传递给class="checkbox"

的复选框

同样如@Ghost所述,您需要将类添加到动态生成的复选框中,如下所示

echo '<input type="checkbox" 
             name="db" id="' . $row ['Database'] . '"   
             value="' . $row ['Database'] . '" 
             class="checkbox"/>';

<强> More Information for .on()

答案 2 :(得分:0)

你的jquery选择器正在寻找带有css类`checkbox&#39;的元素,要么将这个类添加到你的html:

echo '<input type="checkbox" class="checkbox"...';

或者删除选择器中的句点,以定位所有复选框元素:

$("checkbox").on("change", function() {
    var val = $(this).val();
    var id = this.id;
    alert(val, id);
});

答案 3 :(得分:0)

试试这个

$("body").on("change",".checkbox", function() {
    var val = $(this).val();
    var id = $(this).attr("id");
    alert(val, id);
});