动态创建的元素都返回相同的索引

时间:2017-12-06 18:00:36

标签: javascript jquery

我正在动态创建表中的下拉列表,我正试图获取触发事件的下拉列表的索引,如下所示:

$(".template").on('change', '.dataTypes', function () {
    var selectedDatatype = $(this).find(":selected").val();
    var ix = $(this).index(); // get this index

    $.ajax({
        type: "GET",
        url: "http://localhost...",
        contentType: "application/json; charset=utf-8",
        success: function (result) {
            populateListDropdown("gs", ix, result.Result);
        },
        error: function () { },
        timeout: 120000
    });
});

这段代码,无论我与之交互的下拉列表总是为索引返回0,我不知道为什么。

HTML如果它有用。该页面在启动时加载了一行,并通过单击按钮添加了其他行。

<table class="tblColumns">
    <tr>
        <td>
            <div class="column">
                Select DataType :
                <select class="dataTypes"></select>
        </td>
    </tr>
</table>

2 个答案:

答案 0 :(得分:1)

index()方法根据其兄弟姐妹返回索引。您的所有下拉列表都是单独的td。所以都有相同的索引。

您正在寻找的tr索引不是select。尝试

$(this).closest('tr').index();

答案 1 :(得分:0)

如需进一步阅读,请查看https://api.jquery.com/index/

“如果没有参数传递给.index()方法,则返回值是一个整数,表示jQuery对象中第一个元素相对于其兄弟元素的位置。”

在HTML中,它是唯一的元素,因此总是返回“0”。

正如@Azim指出的那样,如果你使用它,它可能会有用。