2013-02-13 34 views
11

Thứ nhất, chỉ muốn nói rằng tôi vô vọng với jQuery.jQuery chọn tất cả các hộp kiểm con

tôi đang tìm kiếm tại một số mã từ một bài đăng trên đây mà chọn mỗi hộp kiểm cha mẹ (và các công trình):

$(function() { 
    $(":checkbox").change(function() { 
    $(this).parents().children(':checkbox').attr('checked', this.checked); 
    }); 
}); 

Chúng tôi có một cấu trúc hình cây sử dụng <ul> <li> và mỗi <li> có một hộp kiểm. Tôi muốn làm điều ngược lại ở trên và thực hiện lựa chọn hộp kiểm tương tự trên tất cả các hộp kiểm con.

Có ai có thể sửa đổi các điều trên để làm điều đó không?

Chỉ cần lưu ý chúng tôi đang sử dụng dao cạo và mỗi hộp kiểm là một @ Html.CheckboxFor nên sản lượng nằm dọc theo dòng:

<input name="Survey.Buildings[0].IsSelected" type="checkbox" value="true" checked="checked" data-val="true" data-val-required="The Selected? field is required." id="Survey_Buildings_0__IsSelected" /> 
<input name="Survey.Buildings[0].IsSelected" type="hidden" value="false" /> 
  • EDIT 2:

OK Tôi có cố định HTML và cấu trúc bây giờ trông giống như:

<ul> 
    <li> Cbx1 
     <ul> 
      <li> Cbx 2 </li> 
     </ul> 
    </li> 
    <li> Cbx3 </li> 
    <li> Cbx4 
     <ul> 
      <li> Cbx 5 </li> 
      <li> Cbx 6 </li> 
     </ul> 
    </li> 
</ul> 

Vì vậy nếu Cbx4 được chọn Cbx5 a thứ 6 sẽ được kiểm tra, và nếu nó được bỏ chọn họ sẽ được kiểm soát

nhiều đánh giá cao

Andy

+0

Bạn sẽ phải cung cấp một số đoạn mã HTML cụ thể, và mô tả chính xác các hộp phải được kiểm tra khi một số thay đổi hộp. – nbrooks

+0

Cập nhật bài viết của tôi –

+0

nếu Cbx2 được chọn không có gì sẽ xảy ra, tôi oly muốn chuyển các hộp kiểm con. Vì vậy, cbx1 sẽ chuyển đổi cbx2 không ngược lại, và cbx4 sẽ chuyển đổi cbx5 và 6. –

Trả lời

27

jsFiddle Demo

$(function() { 
    $("input[type='checkbox']").change(function() { 
    $(this).siblings('ul') 
      .find("input[type='checkbox']") 
      .prop('checked', this.checked); 
    }); 
}); 
+0

Vấn đề là trên ví dụ jsfiddle của bạn khi 3 được chọn, 4 được chọn và nó không phải là con của 3. Vì vậy, trong ví dụ về bài viết của tôi khi Cbx3 được chọn không có gì khác sẽ bị ảnh hưởng vì nó không có con của LI –

+0

Tôi thấy có, 5 và 6 nên tồn tại trong cùng một LI đó là những gì có thể là vấn đề của tôi, tôi sẽ sửa đổi HTML của tôi, và làm ví dụ của bạn? –

+0

Tôi đã cập nhật bài đăng của mình để phản ánh cách HTML bây giờ trông như thế nào. Như bạn có thể thấy CBx5 và CBX6 bây giờ là một danh sách con bên trong danh sách CBX4. Điều đó có ý nghĩa? –

0
$(function() { 
    $(":checkbox").change(function() { 
    $(this).children(':checkbox').attr('checked', this.checked); 
    }); 
}); 

Không thực sự rõ ràng với câu hỏi của bạn nhưng bạn có thể thử lại bằng cách loại bỏ phụ huynh() như được trình bày ở trên.

Các vấn đề liên quan