2013-09-07 2 views
0

У меня есть простой код, чтобы поднять верхний край всплывающей подсказки по высоте.Как изменить верхний край элемента в соответствии с его высотой?

$("#tooltip").css({'marginTop':'-' + $("#tooltip").height}); 

Я использую JQuery 1.9.1 с UI 1.9.2, и я не знаю, почему это не работает.

подсказке элемент, MarginTop должен быть установлен в - + tooltip.height

например
tooltip.height = 50px, margin-top:-50px;

Может кто-то отметить мою ошибку?
Благодаря

ответ

2

Попробуйте ниже:

$("#tooltip").css("margin-top", function() { 
    return -1 * $(this).outerHeight() // <== Multiplies outerHeight() by -1 and returns the result 
}); 

В этом случае, если $.css() получает номер, он будет автоматически конвертировать в строку с 'рх'. Если он получает строку, он предполагает, что значение завершено и должно быть установлено как есть.

Следующая работала бы, а также:

// Passing in a number 
$("#tooltip").css({'marginTop': - $("#tooltip").outerHeight()}); 
$("#tooltip").css({'marginTop': -1 * $("#tooltip").outerHeight()}); 
$("#tooltip").css('marginTop',  - $("#tooltip").outerHeight()); 
$("#tooltip").css('marginTop',  -1 * $("#tooltip").outerHeight()); 

// Passing in a string with units specified 
$("#tooltip").css({'marginTop': '-' + $("#tooltip").outerHeight() + 'px'}); 
$("#tooltip").css('marginTop',  '-' + $("#tooltip").outerHeight() + 'px'); 

Хотя это не удается, как результирующая строка "-20" является недопустимым значением CSS для MarginTop:

$("#tooltip").css({'marginTop': '-' + $("#tooltip").outerHeight()}); 

Форма строки полезна, если вы хотите для установки значения с использованием процентных значений или их значений:

$("#tooltip").css({'marginTop': "2em"}); 
$("#tooltip").css({'marginTop': "10%"}); 
+0

Можете ли вы рассказать о том, как это работает, чтобы ответить на вопрос? –

+0

Он устанавливает «margin-top» в возвращаемое значение функции. В этом случае сам умножил -1, чтобы дать отрицательный результат. –

+0

это отлично работает спасибо @ Dc5 – user2751288

0
$("#tooltip").css("margin-top", function() { return $(this).outerHeight() }); 
+0

Это работает отлично, за исключением того, что оно дает положительное значение для margin-top – user2751288

+0

u может делать -Math.abs ($ (this) .outerHeight()), он всегда будет возвращать отрицательное число. – Gyandeep

0
$("#tooltip").css({ marginTop: - $("#tooltip").outerHeight() + 'px' }); 
+0

Я не знаю, почему кто-то проголосовал за мой ответ, но вот [Fiddle] (http://jsfiddle.net/mdesdev/x2qcR/) – mdesdev

Смежные вопросы