jQuery width () возвращает 0 для элемента span, созданного на лету? - PullRequest
8 голосов
/ 26 марта 2010

Я пытаюсь определить ширину строки. Я использую следующий код, но он всегда возвращает 0. Кажется, что, поскольку элемент span создан и еще не присутствует в теле страницы, jQuery width () возвращает 0. Есть ли способ, которым я могу ширина текста, не прибегая к созданию фиктивного HTML-кода на странице?

Спасибо:)

$('<span>test</span>').width(); // width = 0
$('span.width').width(); // returns a width value

<body><span class="width">test</span></body>

Ответы [ 5 ]

8 голосов
/ 26 марта 2010

Элемент должен присутствовать в DOM для расчета ширины. Если вам нужно вычислить это до того, как пользователь сможет увидеть элемент, попробуйте скрыть его, прежде чем поместить его в DOM.

1 голос
/ 26 марта 2010

Вы можете попробовать добавить элемент управления со свойством css visibility: hidden на страницу, прежде чем получить размер, поэтому избегайте необходимости делать элемент видимым.

Невозможно получить ширину без добавления элемента управления, так как ширина может мешать множеству разных вещей.

0 голосов
/ 15 июля 2013

Если вы установите ширину с помощью встроенного CSS, я считаю, что ширина возвращает правильное значение Не идеально, но может быть хорошо для некоторых контекстов.

0 голосов
/ 05 декабря 2012

Вы не можете установить ширину встроенного элемента, так что вы, вероятно, всегда получите 0, или ноль, или неопределенный, или какой-то вариант вывода, который вам совсем не поможет.

0 голосов
/ 22 января 2012

Я пришел сюда потому, что делал тесты с Jasmine и ему нужно было вычислить ширину объектов jQuery, созданных на лету.

Решение добавить их в DOM для тестов было: http://testdrivenwebsites.com/2010/07/29/html-fixtures-in-jasmine-using-jasmine-jquery/

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