提问人:Andy 提问时间:11/8/2023 最后编辑:Andy 更新时间:11/8/2023 访问量:40
如何在有或没有 Jquery 的 Javascript 中通过 data-* 值查找 CheckBox
How to find a CheckBox by a data-* Value in Javascript with or without Jquery
问:
我在 ASP.NET 视图上有几个复选框。从 Javascript 函数中,我需要不是通过 ID 或 NAME 来查找复选框,而是通过复选框上 data-selection-productid 属性中的值来查找复选框。
复选框如下:
<input type="checkbox" asp-for="@si.IsSelected"
data-selection-productid="@si.ProductID"
data-linenumber="@si.LineNumber"
value="@si.ProductID"
onclick="selectionChanged(this)" />
上面的 selectionChanged 函数引用不是需要查找 CheckBox 的函数,而是以下 Textbox 事件需要 CheckBox。下面的代码位于 foreach 循环中,为集合中的产品数量生成此代码行和第一组代码行。正是出于这个原因,ID 和名称都不起作用。它们将被复制。不重复的是复选框内 data-selection-productid 值中的值。
<input type="number" asp-for="@si.Quantity"
data-productid="@si.ProductID"
data-linenumber="@si.LineNumber"
value="@si.Quantity"
onclick="quantityChanged(this)" />
因此,从 quantityChanged 函数中,我需要找到 CheckBox,其 data-selection-productid 值与上面文本框中的 data-productid 值相同。
我尝试了以下代码的几种变体,但无济于事。我已经验证了 textBox 中的 productid 是否有效,并且与显示页面时相同。
theCheckBox = ("input").find(`[data-selection-productid='${productid}']`);
当执行到达上述代码行时,javascript 终止。
任何帮助将不胜感激。
答:
代码不起作用的原因是,您尝试在非 JQuery 对象上调用 JQuery 函数(缺少 $ 符号)。
但是,您可以在纯 Javascript 中非常轻松地做到这一点。如果产品 ID 保存到变量中,则可以使用以下查询选择器:productId
document.querySelectorAll(`input[data-selection-productid="${productId}"]`);
这将选择具有属性“data-selection-productid”且值为“valuehere”的所有“input”元素。
此外,如果属性的值无关紧要,您还可以选择具有“data-selection-productid”属性的所有元素,无论其值如何:
document.querySelectorAll(`input[data-selection-productid]`);
评论
input[data-selection-productid="@si.productID"]
);
评论