如何从@for循环中检索值到jquery .. for循环中的每个值都应该有不同的id,而jquery应该得到每个单独的id .... 我的循环,
@for (int i = 0; i < searchList.Count;i++ )
{
<label for="input@i"><input type="checkbox" id="input@i"/>@searchList[i] </label>
}
我的jquery没有帮助,
$("#input@i").on("click", function () {
var currentChk = $(this);
var propCheck = currentChk.prop("checked");
if (propCheck) {
debugger;
var valChk = $("#input@i").val();
alert(valChk);
}
});
提前致谢...
答案 0 :(得分:2)
您可以使用Attribute Starts With Selector绑定事件。
$("[id^=input]").on("click", function () {
var currentChk = $(this);
var propCheck = currentChk.prop("checked");
if (propCheck) {
debugger;
var valChk = $("#input@i").val();
alert(valChk);
}
});
由于标签和输入复选框的ID都以&#39;输入&#39;开头。 click事件将绑定到它们。如果你想限制你可以添加类型到选择器,例如你只想复选框,你可以改变选择器。
$("input[id^=input]").on("click", function () {...
或
$(":checkbox[id^=input]").on("click", function () {...
如果将类指定给要附加事件的控件,则可以使用类选择器绑定事件。
@for (int i = 0; i < searchList.Count;i++ )
{
<label for="input@i"><input type="checkbox" class="chk-class" id="input@i"/>@searchList[i] </label>
}
$(".chk-class").on("click", function () {...
修改正如Mohamed-Yousef所指出的,您应该在currentChk
语句中使用$(this)
或$("#input@i")
代替$("#input@i").val();
,因为@i不会是C#循环的替换值,但它将作为字符串文字添加。
作为额外的 note ,您可以尽可能使用本机javascript并且合适,例如我会使用this.checked而不是currentChk.prop(&#34; checked&#34;)来获得更好的性能,可读性和简单性。
$("[id^=input]").on("click", function () {
if (this.checked)
{
//your code
}
else
{
//your code
}
});
答案 1 :(得分:0)
如果您想为所有输入触发onclick
$("input").click(function () {
var currentChk = $(this);
var propCheck = currentChk.prop("checked");
if (propCheck) {
var valChk = "Id:" + this.id + " Value:" + this.value;
alert(valChk);
}
});
答案 2 :(得分:0)
$("input:checkbox [id^=input]").click(function(){
if ($(this).is(":checked")) {
var valChk = $("this").val();
alert(valChk);
}
});
您可以使用另一个选项