我正在动态创建表中的下拉列表,我正试图获取触发事件的下拉列表的索引,如下所示:
$(".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>
答案 0 :(得分:1)
index()
方法根据其兄弟姐妹返回索引。您的所有下拉列表都是单独的td
。所以都有相同的索引。
您正在寻找的tr
索引不是select
。尝试
$(this).closest('tr').index();
答案 1 :(得分:0)
如需进一步阅读,请查看https://api.jquery.com/index/
“如果没有参数传递给.index()方法,则返回值是一个整数,表示jQuery对象中第一个元素相对于其兄弟元素的位置。”
在HTML中,它是唯一的元素,因此总是返回“0”。
正如@Azim指出的那样,如果你使用它,它可能会有用。