kukaew
@kukaew

Как правильно написать условие для js/jquery, чтоб сдвинуть все div у которых width < 300?

Почему не работает?
if($('div').css("width") < 300) {
	$(this).css("margin","0 0 0 -50px")
};


Без условия работает $('div').css("margin","0 0 0 -50px"). Что не так?
Спасибо.
  • Вопрос задан
  • 320 просмотров
Решения вопроса 1
DevMan
@DevMan
потому что css("width") возвращает строку вида "Хpx", которую бесмысленно сравнивать с числом.
поэтому нужно либо приводить ее к числу при помощи parseInt(), либо использовать width() вместо css('width').
jsfiddle.net/vur0xj3g
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
Потому что в вашем случае this не указывает на div. Попробуйте так
$('div').each(function(){
  var div = $(this)
  if(div.width() < 300) {
    div.css("margin","0 0 0 -50px")
  }
})


UPD: да, как верно заметил DevMan css('width') возвращает ширину в виде строки. Поэтому сравнивать нужно не div.css('width') < 300 а div.css('width') < '300px' или div.width() < 300. Обновил код.
Ответ написан
kukaew
@kukaew Автор вопроса
$('div').each(function(){
if($(this).width() < 300 ) { $(this).css("margin","0 0 0 -50px") } });

- так работает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы