没有在此代码中获取id属性值

时间:2013-08-10 21:03:39

标签: jquery

我只获取第一行中的id属性值,但想在其他动态创建的行中获取属性值。单击表格行输入标记应显示 请帮我找到解决方案。

脚本:

<script>
$('document').ready(function () {
    $('#add').click(function () {
        var id = parseInt($('#main tbody tr:last').attr('id')) + 1;
        $('#main > tbody:last').append("<tr class=\"edit_tr\" id=\"" + id + "\" ><td>" + id + "</td><td><span id=\"parti_" + id + "\" class=\"text\" ></span><input type=\"text\" class=\"editbox\" id=\"parti_input_" + id + "\" /></td><td><span id=\"qty_" + id + "\" class=\"text\"></span><input type=\"text\" class=\"editbox\" id=\"qty_input_" + id + "\" /></td><td><span id=\"amountrs_" + id + "\" class=\"text\"></span><input type=\"text\" class=\"editbox\" id=\"amountrs_input_" + id + "\" /></td><td><span id=\"amountp_" + id + "\" class=\"text\"></span><input type=\"text\" class=\"editbox\" id=\"amountp_input_" + id + "\" /></td><td></td><td></td></tr>");
    });
    $('#del').click(function () {
        $('#main tbody tr:last').remove();
    });
    $(".edit_tr").click(function () {
        var ID = $(this).attr('id');
        $("#parti_" + ID).hide();
        $("#qty_" + ID).hide();
        $("#amountrs_" + ID).hide();
        $("#amountp_" + ID).hide();
        $("#parti_input_" + ID).show();
        $("#qty_input_" + ID).show();
        $("#amountrs_input_" + ID).show();
        $("#amountp_input_" + ID).show();
    }).change(function () {
        var ID = $(this).attr('id');
        var first = $("#first_input_" + ID).val();
        var last = $("#last_input_" + ID).val();
        var dataString = 'id=' + ID + '&firstname=' + first + '&lastname=' + last;
        $("#first_" + ID).html('<img src="load.gif" />'); // Loading image
    });
    $(".editbox").mouseup(function () {
        return false
    });
    // Outside click action
    $(document).mouseup(function () {
        $(".editbox").hide();
        $(".text").show();
    });
});
</script>

HTML CODE:

<tbody>
    <tr class="edit_tr" id="1">
        <td>1</td>
        <td><span id="parti_1" class="text"></span>
            <input type="text" class="editbox part" id="parti_input_1" />
        </td>
        <td><span id="qty_1" class="text"></span>
            <input type="text" class="editbox" id="qty_input_1" />
        </td>
        <td><span id="amountrs_1" class="text"></span>
            <input type="text" class="editbox" id="amountrs_input_1" />
        </td>
        <td><span id="amountp_1" class="text" /></span>
            <input type="text" class="editbox" id="amountp_input_1" />
        </td>
        <td></td>
        <td></td>
    </tr>
</tbody>

2 个答案:

答案 0 :(得分:0)

我在你的标记中没有看到#main<table>,所以我自己添加了。

如果您想定位tbody #main > tbody,那么#main必须位于<table>标记内。我刚刚在我的例子中删除了它。这是你在找什么?

点击这里

Demo

我还更正了ready函数中的额外',应为$(document)。还添加了一个仅用于演示的按钮。

答案 1 :(得分:0)

您需要使用事件委派将事件侦听器附加到动态创建的元素。根据您使用的jQuery版本,您将使用.on.delegate.live

$("body")
    .on('click', ".edit_tr", function () {
        ...
    })
    .on('change', ".edit_tr", function () {
        ...
    });