2012-04-02 11 views
1

У меня есть страница с элементами с относительным положением.Проверьте, существует ли положение

style="position: relative;" 

Некоторые из них имеют верхние/левые координаты, а некоторые нет. Есть ли способ проверить наличие координат внутри тега стиля с помощью jQuery?

Если нет, то я хотел бы, чтобы добавить их, делая что-то вроде:

if (...) { 
    var myDiv = $(".myDiv");  
    var pos = myDiv.position(); 
    myDiv.css({ "left:" + pos.left + "px", "top:" + pos.top + "px" }); 
} 

ответ

3

Как показывает this jsfiddle значение по умолчанию сверху/left - "auto ". Таким образом, чтобы проверить, установлено ли значение CSS или нет, вы можете проверить, является ли это значение «auto» или нет.


Тест:

<div style="position: relative;"></div> 

<div style="position: relative; left: 10px;"></div> 

<div style="position: relative; left: badvalue;"></div> 

<script type="text/javascript"> 
    $(function() { 
     $('div').each(function() { 
      alert($(this).css('left')); 
     }); 
    }); 
</script> 
+0

Круто! Итак, я могу сделать что-то вроде этого: if (myDiv.css ('left') == 'auto') { \t \t var pos = myDiv.position(); \t \t myDiv.css ({"left:" + pos.left + "px", "top:" + pos.top + "px"}); \t} – santa

+0

Вы должны прочитать документацию на [jQuery CSS] (http://api.jquery.com/css/), так как код в указанном выше комментарии неверен. Но кроме этого, да, я не понимаю, почему нет :-) – Hubro

3

Вы можете использовать css метод:

var hasTop = $('#element').css('top') !== 'auto'; 
var hasLeft = $('#element').css('left') !== 'auto'; 

Значение по умолчанию для top и left является auto, поэтому, если метод css не возвращает, что вы знаете, что атрибуты стиля были установлены в другом месте.

2

Вы можете просто проверить для тех объявления стиля, как показано ниже,

DEMO

HTML:

<span style="position: relative;"></span> 
<span style="position: relative; top: 100px; "></span> 
<span style="position: relative;"></span> 
<span style="position: relative; left: 10px;"></span> 
<span style="position: relative;"></span> 

JS

$('span').each (function() { 
    alert(this.style.left != '' || this.style.top != ''); 
}); 
Смежные вопросы