Подтвердить что ты не робот

Добавление пикселей в свойство jquery.css() left

Это мой код:

var lef=$(this).css("left");
var top=$(this).css("top");
alert(lef);
$(this).after("<div class='edit cancel' style='position:absolute;top:"+top+";left:"+lef+"'>Cancel</div>");

Теперь утверждение var lef=$(this).css("left") + 150, похоже, не работает. Я хочу получить свойство left и добавить к нему 150 пикселей

Как я могу это сделать?

Спасибо.

4b9b3361

Ответ 1

Теперь оператор var lef = $(this).css( "left" ) + 150, похоже, не работает

Причина, по которой не работает, заключается в том, что вы должны добавить px в конце свойств top и left внутри вашего .after().

Вам также нужно использовать parseInt, потому что .css('left') вернет "??px".

var lef = parseInt($(this).css("left")) + 150; // add 150
var top = parseInt($(this).css("top")); //also parseInt top for consistency
alert(lef);
$(this).after("<div class='edit cancel' style='position:absolute;top:"+top+"px;left:"+lef+"px'>Cancel</div>");
//                                                                          ^^px           ^^px

Ответ 2

Как и в jQuery 1.6, вы можете сделать это проще всего, просто добавив или вычитая из текущего значения. Например, чтобы добавить 150px:

$(this).css("left", "+=150")

http://api.jquery.com/css/#css-properties

Как и в jQuery 1.6,.css() принимает относительные значения, аналогичные .animate(). Относительные значения - это строка, начинающаяся с + = или - = до увеличивать или уменьшать текущее значение. Например, если элемент padding-left - 10px,.css( "padding-left", "+ = 15" ) приведет к общее отступы слева от 25px.

Ответ 3

Я упростил ответ тридцать. Вы можете использовать эту функцию jQuery для любого свойства, которое хотите добавить пиксели.

jQuery.fn.addPixelsTo = function(property, pxls) {    
     return $(this[0]).css(property, (parseInt($(this[0]).css(property).substr(0,2))+pxls)+'px');
}

Пример:

$('#element').addPixelsTo('border-top-width', 30);

Ответ 4

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

var WinW=jQuery(window).width();
var lft =parseInt(WinW/2);
jQuery(".div").css("left" , (lft));

он поместит div в центр страницы, тогда он будет работать нормально....

Ответ 5

может попробовать

$(this).css("left", function(){
return ($(this).css("left")+150);
});

для любой комплексной модификации, а также

Ответ 6

var lef=$(this).css("left")

Эта строка возвращает строку, с которой вы связываете 150 с оператором +. Вам нужно сначала преобразовать строку $(this).css("left") в число.

A jsfiddle, чтобы доказать свою точку зрения.

Итак, вы можете сделать это следующим образом -

var lef = partInt($(this).css("left")) + 150;

Теперь вы получите добавление вместо конкатенации строк.