你的选择器有点偏离
$("#costsDropdown ul").each
那是试图选择孩子ul
容器的#costsDropdown
(这是ul
) - 你想要的是:
$("#costsDropdown li").each(function() {
$(this).attr("data-position", "TEST-VALUE123");
});
ID 是唯一的 - 无需将选择器与 ID 重复使用and它的元素类型。
请注意,我使用了$(this)
, not $("li")
, 在 - 的里面each
打回来。$("li")
选择all li
元素,页面上的任何位置;我们只需要一个 jQuery 包装器来处理我们正在处理的一个特定的each
.
事实上,each
由于 jQuery 基于集合的性质,这是完全没有必要的;如果你使用.attr
setter,它设置集合中所有元素的属性:
$("#costsDropdown li").attr("data-position", "TEST-VALUE123");
这会将值设置为all of the li
里面的元素#costsDropdown
.
如果您需要对个体设置单独的个体值li
元素,你仍然不需要each
(尽管如果你想使用它也没关系);你可以使用以下版本attr
它接受一个回调,用于找出要设置的值:
$("#costsDropdown li").attr("data-position", function(index) {
return "Test value " + index;
});
这将设置"Test value 0"
在第一个li
, "Test value 1"
在第二个,等等。就像each
上面的例子,如果你需要的话,你可以使用this
在回调中引用li
对于该调用(可能使用$(this)
如果您需要 jQuery 包装器,则包装它)。