我想使用以下函数创建一个包含列的唯一值的下拉列表。
该函数创建下拉列表,但仅显示列的第一个值,而不是该列中的所有唯一值。
有人可以告诉我这里有什么问题或遗漏吗?
function createDropdownFromColumn() {
var arr = [];
$("td:first").each(function() {
if ($.inArray($(this).text(), arr) == -1)
arr.push($(this).text());
});
// create select
var select = $("<select />");
for (var i = 0; i < arr.length; i++) {
$("<option>" + arr[i] + "</option>").appendTo(select);
}
// append select
select.appendTo("body");
}
非常感谢你提供任何帮助,蒂姆。
答案 0 :(得分:2)
该选择器可能只匹配一个元素,第一个TD,你真的在寻找first-child
选择器:
$("td:first-child").each(function() {...
答案 1 :(得分:1)
您只获得一个值,因为您只需要第一个匹配的td
元素。
您的选择器是:
"td:first"
根据the documentation,仅检索第一个匹配的元素。如果您希望所有td
元素都是其各自tr
元素的第一个子元素,那么您的选择器将只是:
"td:first-child"
有关详细信息,请参阅:first-child
上的文档。
答案 2 :(得分:1)
如果你遇到这样的问题,请确保下次再调试一下。例如,打印“arr”数组中的元素数量会指出问题是只抓取了一个项目。
这会让你回到你的选择器是问题,然后检查: http://api.jquery.com/category/selectors/
“:first”描述为:“选择第一个匹配的元素。”
在编写网站时,jquery网站是一个了不起的资源。