我有一个ASP.NET MVC剃刀页面,它有一个循环并且在循环中有一个CheckboxFor
。我正在为每个复选框分配一个数字值。我还分配了一个类,以便当这些复选框值中的任何一个发生更改时,我可以在jquery中捕获onchange事件:
@Html.CheckBoxFor(modelItem => item.PrincipleInvestigator, new { Value = item.ProjectResearcherId, @class = "Principle-investigator-checkbox" })
然后,在jquery中,我想要点击的特定复选框的数字值:
$(".Principle-investigator-checkbox").change(function () {
alert($(".Principle-investigator-checkbox").val);
});
这不起作用。我实际上并不知道如何识别单击列表中的哪个复选框。像this.val
这样的东西?另外,我不确定.val
是否给了我分配它的数字值,但如果我检查渲染的HTML,则可以看到值:
<input value="4570" class="Principle-investigator-checkbox" data-val="true" data-val-required="The PrincipleInvestigator field is required." id="item_PrincipleInvestigator" name="item.PrincipleInvestigator" type="checkbox">
答案 0 :(得分:2)
$(".Principle-investigator-checkbox").change(function () {
alert(this.value);
//or alert($(this).val());
//avoid alert($(".Principle-investigator-checkbox").val());
});
<强> THIS.VALUE 强>
这里,this
引用本机DOM元素,因此我们可以引用本机DOM属性value
来获取值
<强> $(本).VAL()强>
这里我们用jQuery对象包装本机DOM元素。因此,我们需要使用jQuery包装器对象上的方法来获取值。那是 val()方法
避免提醒($(&#34; .Principle-investigator-checkbox&#34;)。val())
val()是一个getter方法,它将始终返回第一个匹配的元素而不是所有元素。在处理多元素选择器时,最好在更改函数中使用this
。
答案 1 :(得分:1)
$(".Principle-investigator-checkbox")
将选择此类的所有复选框,因为有多个checbkx,您必须编写$(this)
以使用单击的一个引用获取当前clikced一个值,如下所示:
$(".Principle-investigator-checkbox").change(function () {
alert($(this).val()); //gets value of current checkbox which caused event
});
同样val
不是val()
答案 2 :(得分:1)
val
是一种方法而非属性
使用val()
代替val
$(".Principle-investigator-checkbox").change(function () {
alert($(this).val());
});
在事件处理程序中也使用$(this)
。另外,它将使用类.Principle-investigator-checkbox
的第一个元素的值。