Эквивалент JavaScript для ширины jquery () - PullRequest
9 голосов
/ 28 июля 2011

Мне нужно знать ширину в пикселях элемента, у которого свойство width css установлено в 'auto'. Я попытался element.style.width, но не работал, потому что он вернул 'auto'. Я заметил, что функция jquery width () возвращает длину в px, но я не могу использовать jquery для решения этой проблемы, потому что она не доступна на моей странице. Итак, кто-нибудь знает эквивалентные методы для jquery width ()?

Спасибо.

Ответы [ 3 ]

14 голосов
/ 28 июля 2011

JQuery использует ...

element.getBoundingClientRect().width

внутренне, есть еще кое-что, чтобы справиться с различиями в браузере.

Возвращает размер отображаемых элементов, где .offsetxx возвращает размеры в соответствии с блочной моделью.

element.getBoundingClientRect()

Является наиболее точным способом получения элементов «реальных» размеров.

Вот сообщение Джона Резига (автора jQuery) по этому вопросу.

1 голос
/ 28 июля 2011

В основном это сводится к .offsetWidth, но код jQuery немного сложнее из-за различий между браузерами.

0 голосов
/ 07 декабря 2018

На это потрачено 2 часа.
Другие ответы были неверны для моего случая.
Сравнивая все остальные ответы в одном посте, добавляя мои выводы с примерами:

width() в JQuery
такой же как
clientWidth в JavaScript
для элемента типа select

Пример кода ниже, включая вывод:

// NOTE: Give you element id below
let eleId = 'myselectid1';

// 58 // includes padding into calculation
//   <head>
//   <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
//   </head>
// To enable below/jQuery, you would need above in HTML
// alert( $('#' + eleId).width() );

// 58 // includes padding into calculation
a = document.getElementById(eleId).clientWidth;
alert(a);

// 60 // includes border size and padding into width calculation
a = document.getElementById(eleId).offsetWidth;
alert(a);

// 60 // includes border size and padding into width calculation
a = document.getElementById(eleId).getBoundingClientRect().width;
alert(a);

// 60px (note the px in value, you may also get values like 'auto')
// all dynamic values for all CSS properties, IE>=9
a = window.getComputedStyle(document.getElementById(eleId), null).getPropertyValue("width");
alert(a);

// empty string // if you set it earlier, you would get this
a = document.getElementById(eleId).style.height;
alert(a);

// undefined // only works on window object, not on element like select/ div - fails in older IE<9
a = document.getElementById(eleId).innerWidth;
alert(a);

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...