有你的代碼許多問題,主要的一個:
$("#" + 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 ..它也不工作。 –