有你的代码许多问题,主要的一个:
$("#" + 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”。
你为什么'attr(..,true)'但是prop(..,false)'? –
也许:'onclick =“checkImages(@id)”'?在你的checkImages函数中加入:alert(id)来查看你传递的内容。 –
我做了第一次,但它没有工作,然后我用attr ..它也不工作。 –