2015-08-10 3 views
2

Когда я проверяю элемент на странице, я вижу, что его ширина равна 83,2 пикселя.jQuery UI округление ширины элемента при перетаскивании

Я делаю это "перетаскивать" с JQuery UI:

$el.draggable({ 
    start: function (event, ui) { 
     //$(ui.helper).css('margin', 0); //prevent jumping 
     console.log('width:', $(ui.helper).css('width')); 
     //console.log('width:', $(ui.helper).width()); 
     //console.log('width:', $(event.target).css('width')); 
    } 
}); 

Вывод на консоль после перетаскивания элемента является width: 83px. Это приводит к разрыву строки в тексте элементов позже.

Является ли пользовательский интерфейс jQuery шириной и высотой? Как получить более точное значение?

+0

Если вы удаляете границу, не имеет ли смысл, чтобы ширина была меньше, чем была изначально? –

+0

'Math.round ($ (ui.helper) .width());' используйте это – RRK

+0

Исаак, вот что я и думал. Но ширина не сообщается правильно, даже если я удалю эту строку. Rejith: Я не ищу, чтобы округлить значение. Я хочу получить точную ширину с плавающей запятой элемента при его перетаскивании. Но jQueryUI, кажется, имеет ширину, когда элемент перетаскивается. – reggie

ответ

2

Я нашел ответ на этот вопрос: https://stackoverflow.com/a/16072668/426266

jQueryUI, кажется, устанавливает ширину элемента до целого значения, когда элемент перетаскивается. Кроме того, $ (element) .width() всегда возвращает округленное целочисленное значение.

Я решил проблему так:

$el.draggable({ 
    start: function (event, ui) { 

     var width = event.target.getBoundingClientRect().width; 

     $(ui.helper).css({ 
      'width': Math.ceil(width) 
     }); 
    } 
}); 

Теперь больше нет разрыва строки в элементе, когда он потащил.

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