2016-03-05 60 views
0

我试图检查/取消选中动态生成的复选框。但我无法这样做。 我想要做的是 - 说,我有5个复选框,单击第5个复选框,前4也应该检查。 以下是代码:动态生成的复选框无法检查

function checkImages(id) { 
    if ($('#' + id).is(":checked")) { 
     for (i = parseInt(id) ; i >= 0; i--) {   
      $("#" + id).attr("checked", true); 
     } 
    } else { 
     $(".selectedImages").prop("checked", false); 
    } 
} 

HTML:

@for (int i = 0; i < Model.ImageList.Count; i++) 
{ 
    <div id="id @i" style=" margin:10px; float:left; height:100px; overflow:hidden; width:100px;"> 
     <input type="checkbox" [email protected] name="selectedImages" value="Weekly" onclick="checkImages(id);"> 
    </div> 
} 

这里你可以看到ID = “2” 被选中,但ID = “1” 没有任何检查属性

Here you see id="2" is checked but id="1" doesn't have any checked attribute

+0

你为什么'attr(..,true)'但是prop(..,false)'? –

+0

也许:'onclick =“checkImages(@id)”'?在你的checkImages函数中加入:alert(id)来查看你传递的内容。 –

+0

我做了第一次,但它没有工作,然后我用attr ..它也不工作。 –

回答

0

有你的代码许多问题,主要的一个:

$("#" + id).attr("checked", true); 

应该

$("#" + i).prop("checked", true); 

和清除代码:

$(".selectedImages").prop("checked", false); 

选择通过班,但你的元素有name=selectedImages所以应该是:

<input type="checkbox" id="@i" class="selectedImages" ... 

最后,你的循环变为0,但第一个元素是1(小问题)。

假设你onclick=代码传递正确的值,这里是更新的代码

样本HTML

<input type="checkbox" id="1" class="selectedImages" value="Weekly" onclick="checkImages('1');"> 
<input type="checkbox" id="2" class="selectedImages" value="Weekly" onclick="checkImages('2');"> 
<input type="checkbox" id="3" class="selectedImages" value="Weekly" onclick="checkImages('3');"> 

的jQuery:

function checkImages(id) { 
    if ($('#' + id).is(":checked")) { 
     for (i = parseInt(id) ; i >= 1; i--) {   
      $("#" + i).prop("checked", true); 
     } 
    } else { 
     $(".selectedImages").prop("checked", false); 
    } 
} 

例codepen:http://codepen.io/anon/pen/BKoGaq


然而,这将是我的疏忽不提,你不应该使用数字ID这样来 - 而不是使用data-属性,如:

HTML:

<input type="checkbox" data-id="1" class="selectedImages" value="Weekly" onclick="checkImages(this);"> 
<input type="checkbox" data-id="2" class="selectedImages" value="Weekly" onclick="checkImages(this);"> 
<input type="checkbox" data-id="3" class="selectedImages" value="Weekly" onclick="checkImages(this);"> 

jQuery的

function checkImages(el) { 
    id = $(el).data("id"); 
    console.log(id) 
    if ($(el).is(":checked")) { 
     for (i = parseInt(id) ; i >= 1; i--) {   
      $(".selectedImages[data-id='" + i + "']").prop("checked", true); 
     } 
    } else { 
     $(".selectedImages").prop("checked", false); 
    } 
} 

你也可以使用jquery事件处理程序而不是“onclick”。