如何获取使用html中的循环创建的每个div / li / a的特定元素的ID

时间:2019-05-03 06:50:57

标签: javascript jquery

我正在从控制器传递模型,并使用for循环在div中填充模型元素。对于每个模型项目,都有一个具有不同属性的div。现在,我希望每当单击divs中任何一个的任何链接或元素时,都必须获取分配给它的特定值。

我遇到的问题是,它仅获取在循环的第一次迭代中创建的一个div的值,而与我现在使用的div无关。

下面是与我现在正在打印的完全一样的简单列表,当我单击下面创建的任何链接时,我都希望该链接的值。

假设有15个类别,而我想要第6个类别是“ java”,如何使用jquery来获取它。

@foreach (var category in ViewBag.Categories)
{
     <li class="item"><a id="categoryItem" value = @category.categoryName>@category.categoryName</a></li>

}

3 个答案:

答案 0 :(得分:0)

id="categoryItem"

问题出在这个ID分配中。如果这是您的实际代码,则只需为循环中的所有元素设置相同的ID“ categoryItem”。除了违反HTML标准外,如果您使用此ID寻址元素,这还会导致大多数浏览器选择第一个元素。

要解决此问题,您可以将类别名称包含在ID中,如下所示:

@foreach (var category in ViewBag.Categories)
{
     <li class="item"><a id="categoryItem_@category.categoryName" value ="@category.categoryName">@category.categoryName</a></li>
}

但是,这仅在您的类别名称不包含空格的情况下才能正常工作,因此使用某种整数id可能会更好。

还请注意,""值的双引号value

答案 1 :(得分:0)

您的categoryId模型中是否有category?如果您这样做,则将id="categoryItem"更改为id="@category.categoryId"

答案 2 :(得分:0)

给出您的代码以建立列表:

@foreach (var category in ViewBag.Categories)
{
    <li class="item"><a value="@category.categoryName">@category.categoryName</a></li>
}
  

假设有15个类别,而我想要第6个类别是“ java”,我可以使用jquery来获取。

这可以解释为:

  • 第六个类别,恰好是“ java”(即值不相关)

给予:

$("li.item>a:eq(5)").addClass("thisone");

或作为:

  • “ java”类别,恰好是第六类别(即职位无关)

给予:

$("li.item>a[value=java]").addClass("thisone");

(将选择所有为“ java”的 all

或作为:

  • 第6个“ java”类别(即至少有6个为“ java”,而您希望第6个类别)

给予:

$("li.item>a[value=java]:eq(5)").addClass("thisone");

.addClass("thisone")更改为您要对该商品执行的操作


您似乎在问3个不同的问题-如何获取ID,如何获取第n个元素以及:

  

当我单击任何div中的任何链接或元素时,必须获得分配给它的特定

$("li.item>a").click(function() {
    console.log($(this).prop("value"))
});

正如其他人指出的那样,问题是您可能使用:

$("#categoryItem")...  

,这将总是给您第一个信息,因为ID在HTML文档中必须是唯一的。 (您会注意到我从上面的代码段中删除了有问题的id=