2012-03-19 40 views
12

Tôi sẽ cố gắng tìm tất cả các phần tử "tuyệt đối" trong trang của mình; với jQuery tôi mặc dù nó sẽ là một cái gì đó giống nhưtìm các phần tử có vị trí: thuộc tính

$('[position="absolute"]') 

nhưng trên ff 10.0.2 Tôi không thể tìm thấy một yếu tố ...

Ngoài ra, tôi không thể chạy mã exaple trên http://api.jquery.com/attribute-equals-selector/ Có điều gì sai về cú pháp này?

Trả lời

18

Bạn có thể sử dụng filter()

$('*').filter(function(){ 
    var position = $(this).css('position'); 
    return position === 'absolute'; 
}); 

Bạn không thể sử dụng thuộc tính tương đương với selector vì vì chọn mà sẽ tìm kiếm các yếu tố với một thuộc tính được gọi là vị trí đó bằng tuyệt đối như thế này

<div position="absolute"> 

nhưng trong bạn vị trí trường hợp là thuộc tính css

+0

Umm, onestly, tôi đã quan tâm nhiều hơn để biết nếu có điều gì đó sai trong cú pháp của tôi, hơn là bộ lọc sử dụng explicity ... –

+0

@VitoDeTullio tôi cập nhật câu trả lời của tôi, vị trí là một tài sản css, không phải là một thuộc tính –

+0

wooops, tôi câm> _ < –

0

Hãy thử cách này:

$("*[style*='position:absolute']").each (function() { 
    alert($(this).html()); 
}); 

Demo: http://jsfiddle.net/XRRbr/1/

Thông tin thêm: http://api.jquery.com/attribute-contains-selector/

+1

Tốt, nhưng giả sử kiểu là nội tuyến. http://jsfiddle.net/MGv9X/ –

+0

Điều đó có thể thực hiện được nhưng mã sẽ phức tạp. Nếu câu trả lời được chấp nhận đã làm việc cho bạn thì đó phải là câu trả lời hợp lệ. JFYI, https://developer.mozilla.org/en/DOM/window.getComputedStyle http://stackoverflow.com/questions/754607/can-jquery-get-all-css-styles-associated- với một phần tử – codef0rmer

10

Xây dựng về câu trả lời Nicola, bạn cũng có thể extend jQuery's selector engine.

$.extend($.expr[':'],{ 
    absolute: function(el) { 
     return $(el).css('position') === 'absolute'; 
    }, 
    relative: function (el) { 
     return $(el).css('position') === 'relative'; 
    }, 
    static: function (el) { 
     return $(el).css('position') === 'static'; 
    }, 
    fixed: function (el) { 
     return $(el).css('position') === 'fixed'; 
    } 
}); 

Sau đó, bạn có thể làm những việc như thế này.

$ (': absolute');

$ ('div.sidebar: relative');

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