2016-04-19 21 views
0

我试图找到与ids复选框:checkbox0,checkbox1,checkbox2,...但似乎无法找到如何给第二个参数线。id检查jQuery中的参数[id = ...]

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(); 
       } 
      }); 
+0

请与我们分享您的HTML代码 –

+0

我会分享它,如果它是任何需要,我只需要知道如何通过参数“i”的二号线 – Michiel

+0

有什么你没有使用id选择器? '#theId'? –

回答

1

试试这个:你必须串联i使用复选框。使用maakprojecti相同。

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(); 
       } 
      }); 

而不是运行循环,我会建议使用jQuery开始选择器。如果您的复选框计数有所不同,那么您不必再次触摸脚本。请参阅下面的脚本

$(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(); 
    } 
    }); 
}); 
+0

不会进入更改功能:s – Michiel

+0

您是否已将代码放入$(function(){...})中;'如我的第二个解决方案所示。或者试试我的第二个解决方案。 –

+0

它不会进入if,所以我认为$(this)没有检查属性? – Michiel

4

您需要连接字符串:

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

然而,你会得到更好的服务只是用id选择:

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

或者更好的是,分配常见属性(如类名称)和用途:

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

+0

我试过这个,但似乎并没有工作 – Michiel

+0

好吧,你没有发布所有的相关信息。你能指望什么?答案的最后部分基本上与接受的答案完全相同。指定一个通用属性并使用单个查询来查找元素。 –

0

你可以试试这个。这将列出所有输入名称为“复选框”申请开始:

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

我必须在ID上检查它,但即使我更改了代码也不起作用 – Michiel