jQuery добавляет два значения свойств CSS - PullRequest
1 голос
/ 16 января 2012

Я пытался получить верхнюю позицию элемента и значение margin-bottom.
, что сработало:

var top = -$('elem').postion().top; // lets say its -54
var margin = $('elem').css('margin-top'); // lets say its 0

Bud Мне нужно добавить их для моей функции анимации.top+margin, но jQuery дает -540 px, но ему нужно вернуть -54 px .. или, если его отрицательный, он просто дает -54-10px, когда мне нужно -64 px.

Есть ли что-нибудь, чтобы получить этофиксированный?Я не могу придумать это, и это раздражает меня!

Мой код:

var top = -$('#id1').position().top;
var margin = $('.scrollable').css('margin-top');

var combine = top+margin;

$('.animate').animate({'margin-top' : combine});

Ответы [ 3 ]

6 голосов
/ 16 января 2012

Бад, мне нужно сложить их для моей одушевленной функции.так что top + margin, но jQuery дает 540 p

css значения являются строками, поэтому, поскольку один из ваших операндов является строкой, + интерпретируется как оператор конкатенации (54 + "0" = "540"), а не оператор сложения. (Подробности) Чтобы превратить их в числа, используйте parseInt(str, 10), например:

// I believe `top` will already be a number; check and if not, use parseInt here too,
// e.g. var top = -parseInt($('#id1').position().top, 10);
var top = -$('#id1').position().top;

// This will definitely be a string that needs parsing; note that we're assuming
// here that the margin has been given in `px` units.
var margin = parseInt($('.scrollable').css('margin-top'), 10);

// Now this + is an addition, not a concatenation    
var combine = top+margin;

$('.animate').animate({'margin-top' : -combine});
3 голосов
/ 16 января 2012

Это потому, что он возвращает значения в виде строк и с помощью оператора + объединяет их. Вы можете использовать parseInt, чтобы получить число из строки. Он будет работать даже при наличии суффикса px, но на этом остановится.

var top = $('elem').postion().top;
var margin = $('elem').css('margin-top');

var total = parseInt(top, 10) + parseInt(margin, 10);
0 голосов
/ 16 января 2012

Попробуйте это

var combine = parseInt(top) + parseInt(margin);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...