我正在从控制器传递模型,并使用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>
}
答案 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来获取。
这可以解释为:
给予:
$("li.item>a:eq(5)").addClass("thisone");
或作为:
给予:
$("li.item>a[value=java]").addClass("thisone");
(将选择所有为“ java”的 all )
或作为:
给予:
$("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=
)