2012-06-27 29 views
14

có cách đơn giản để có được các phần tử div lắp hoàn toàn trong một khu vực được xác định không?Jquery | Lấy các phần tử div trong khu vực đã xác định

Ví dụ:

http://i.imgur.com/oIw6i.png

<div id="redbox"> RESIZE DIV </div> 

<div id="grid"> 
    <div id="box1"></div> 
    <div id="box2"></div> 
    <div id="box3"></div> 
    <div id="box4"></div> 
</div> 

tôi có 4 hộp (màu xám) và tôi có thể thay đổi kích thước một div (màu đỏ trên đầu trang của tất cả các ô trống). Sau khi thay đổi kích thước, tôi muốn biết các phần tử div nào được lắp hoàn toàn trong khu vực này.

Có ai biết cách thực hiện việc này không? Có phương pháp hoặc chức năng nào trong JQUERY?

+3

upvoting cho có kiên nhẫn để đính kèm một hình ảnh có ý nghĩa. :) – Cranio

+0

Cảm ơn vì đã giúp tôi, dude. – frgtv10

Trả lời

9

Dường như với tôi, plugin withinBox có thể giúp bạn giải quyết vấn đề này (jquery.fn.withinBox). Bạn có thể sử dụng mã như thế này:

var area = $('#redbox'), 
    offset = area.offset(), 
    selected = $('#grid div').withinBox(offset.left, 
             offset.top, 
             area.width(), 
             area.height() 
             ); 
+0

Dường như với tôi rằng đây là những gì tôi cần. Tôi phải tìm ra! – frgtv10

+0

Làm việc cho tôi! Cảm ơn bạn rất nhiều! – frgtv10

1

Tôi không nghĩ rằng đã có giải pháp hoàn chỉnh cho việc này. Theo đó điều này có thể khác nhau.

Nhưng bạn có thể sử dụng chức năng document.elementFromPoint cho điều đó.

Biết vị trí tuyệt đối của kích thước lớn div bạn có thể tạo bản đồ tọa độ và sau đó xem các phần tử nào theo đó div.

+0

Tôi lo ngại rằng điều này cần phải được tính toán. Nhưng dù gì cũng cảm ơn! – frgtv10

3

Những gì tôi muốn làm với JQuery là lặp qua tất cả các yếu tố để kiểm tra, nhận được giá trị .offset() của họ, cộng với chiều rộng chiều cao.

Sau đó, cho mỗi phần tử tôi sẽ nhận được bốn valuyes:

X1 (offset().top) 
Y1 (offset().left) 
X2 (= X1 + width) 
Y2 (= Y1 + height) 

tôi sẽ sử dụng các giá trị để kiểm tra bốn điểm sau (vẫn cho mỗi phần tử để kiểm tra)

x1,y1 x1,y2 x2,y2 x2,y1 (the four corners) 

Cung cấp chúng tôi đã thực hiện cùng một tring với "bao phủ" DIV (lấy nó bốn góc xd1, yd1, xd2, yd2), tôi sẽ lý do như thế này:

Nếu một hoặc nhiều những điểm này rơi vào "bao phủ" của tôi DIV, sau đó xem xét DIV "bao phủ".

Edit: Tôi không biết đã có một plugin cho rằng, tôi đoán đó là cơ nội bộ cũng giống như tôi, nhưng tôi đặt cược đó là một giải pháp đơn giản hơn tôi :)

+0

Vâng, đây chính xác là plugin 'innerBox'. 1 để giải thích nó! – lonesomeday

+0

Cảm ơn sự giúp đỡ của bạn. Nếu tôi không thể sử dụng plugin hiện tại 'withinBox', đây là cách tôi sẽ tính toán nó! – frgtv10

+0

Bạn được chào đón :) – Cranio

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