2010-01-05 25 views
5
đang

Ví dụ cao nhất vì vậy tôi có thể bắt đầu giải thích vấn đề này:Chọn DIV với z-index

<div style="z-index:5">5</div> 
<div style="z-index:2">2</div> 
<div style="z-index:1">1</div> 
<div style="z-index:4">4</div> 
<div style="z-index:3">3</div> 

(. Z-index giá trị không quan trọng, và thứ tự của chúng, thậm chí ít hơn Chỉ cần ví dụ code)

Vấn đề: Tôi muốn chọn (hoặc sử dụng CSS hoặc JS với jQuery) DIV với giá trị z-index cao nhất. Trong trường hợp trên, tôi muốn chọn cái đầu tiên, bởi vì nó là z-index 5 cao hơn tất cả các chỉ mục z của người khác.

Có cách nào để thực hiện việc này không? Thông tin bổ sung: Tôi đang viết Trình quản lý cửa sổ đơn giản với jQuery + jQuery UI và chỉ mục z được chỉ định bởi tùy chọn ngăn xếp trong .draggable. Tôi dường như không thể tìm cách để làm cho jQuery chỉ định phần tử kéo cuối cùng một lớp, vì vậy tôi sẽ đi theo chỉ mục z-index cao nhất. Bất kỳ giúp đỡ xin vui lòng? Cảm ơn.

Trả lời

2

tôi chắc chắn rằng bạn có thể sử dụng các sự kiện ngừng để đạt được quyền truy cập vào các mục gần đây kéo, ví dụ:

$('.selector').draggable({ 
    stop: function(event, ui) { 
     $(event.target).addClass('justDragged'); 
    } 
}); 

Nếu bạn muốn xem tất cả các hàm/biến được liên kết với sự kiện, bạn có thể sử dụng như sau:

var str = ''; 
for (i in event) { 
    str += i + ', '; 
} 
alert(str); 

Điều này sẽ cho bạn một dấu hiệu tốt về những gì có sẵn cho bạn trong bất kỳ số tham số gọi lại jQuery nào.

+0

Tôi nên làm mới trang - luôn có một câu trả lời hay ở đây tại SO, rõ ràng! (mặc dù tôi sử dụng bắt đầu khác hơn là dừng lại, mà mô phỏng hành vi 'Windowing') Chấp nhận :) –

0

Bạn luôn có thể thử nghiệm với jQuery(".yourDivs").css("z-index") sau khi bạn đã thêm lớp học vào tất cả các div của mình.

+0

Bạn có nghĩa là tôi phải lặp qua tất cả các yếu tố mà tôi muốn so sánh chỉ mục z và lưu trữ chỉ số cao nhất? Vì tôi đang viết một trình quản lý cửa sổ, điều này có thể là một chút không hiệu quả khi gọi mỗi lần kéo được thực hiện, và khi có rất nhiều div, thậm chí còn kém hiệu quả hơn. –

+0

Có, điều này sẽ không hiệu quả, nhưng bạn nên cân nhắc sử dụng một cấu trúc dữ liệu riêng để làm những gì bạn đang cố gắng đạt được (một ngăn xếp ngăn xếp riêng biệt về những gì có thể làm được). Sử dụng zindex Tôi nghi ngờ bạn sẽ có được một cách tốt hơn – marcgg

0

Ở vị trí của bạn, tôi chỉ cần đính kèm sự kiện onclick trên mỗi div. Tôi nghĩ rằng sau đó Javascript hoặc jQuery sẽ tự động đưa vào tài khoản thông tin zindex và bạn sẽ nhận được sự kiện chính xác trên DIV nơi bạn nhấp vào.

0

Tôi đã chỉ ra rằng có sự kiện 'bắt đầu kéo' trong .draggable. Tôi thật ngốc nghếch.

 
$("#window-"+id+".staticwindow.stwin").draggable({ 
... 
    start: function(e, u){ 
     $(".window").removeClass('active'); 
     $(this).addClass('active'); 
    } 
}); 

Mặc dù phương pháp này của tôi không liên quan đến câu hỏi ban đầu của tôi nữa, ít nhất không có vòng lặp. Tôi sẽ không chấp nhận bất kỳ câu trả lời nào vì điều này dường như cần một vòng lặp. (Mặc dù tôi hơi nghiêng chấp nhận câu trả lời bởi zarko-o vì nó dẫn tôi đến suy nghĩ về các sự kiện)

Cảm ơn mọi người đã trả lời!

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