id中的Jquery参数检查[id = ...]

时间:2016-04-19 10:08:15

标签: jquery

我试图找到带有ids的复选框:checkbox0,checkbox1,checkbox2,...但似乎无法找到如何将参数提供给第二行。

for (var i = 0; i < @Model.ProjectCategories.Count; i++) {                
            $('input:checkbox[id="checkbox" + i]').change(
            function () {
                alert(this);
                if (this.is(':checked')) {                                                                                                          
                    $('#maakproject_' + this.id.charAt(this.id.length -     1)).show();
                } else {                       
                    $('#maakproject_' + this.id.charAt(this.id.length - 1)).hide();
                }
            });

3 个答案:

答案 0 :(得分:4)

您需要连接字符串:

$('input:checkbox[id="checkbox"' + i + ']').change(...

但是,使用id选择器会更好:

$('#checkbox' + i).change(...

或者更好的是,分配一个公共属性(比如一个类名)并使用:

$('.myClassName').change(...

答案 1 :(得分:1)

试试这个:你必须将i与复选框连接起来。对maakproject i使用相同的for (var i = 0; i < @Model.ProjectCategories.Count; i++) { $('input:checkbox[id="checkbox"' + i +']').change( function () { alert($(this)); if ($(this).is(':checked')) { $('#maakproject_' + i).show(); } else { $('#maakproject_' + i).hide(); } });

$(function(){
  //bind change event handler using start with selector i.e. checkbox id starting with checkbox
  $('input[id^="checkbox"]').change(function(){
     //get index from checkbox id
     var checkboxIndex = $(this).attr('id').replace('checkbox','');
     if($(this).is(':checked'))
     {
       $('#maakproject_'+checkboxIndex).show();
     }
     else
     {
       $('#maakproject_'+checkboxIndex).hide();
     }
  });
});

而不是运行循环我建议使用jquery start with selector。如果您的复选框计数不同,则您不必再次触摸该脚本。见下面的脚本

{{1}}

答案 2 :(得分:0)

你可以试试这个。这将列出名称为“checkbox”的所有输入字段的开头:

$("input[id^='checkbox']").each(function() { 
   console.log($(this).attr('id'));
});