Функция обрезки jQuery не работает в IE7? - PullRequest
10 голосов
/ 24 марта 2010

Я пытаюсь вызвать функцию jQuery text() и запустить ее через функцию trim(), чтобы удалить все конечные и начальные пробелы. Кажется, отлично работает в Firefox, однако не работает в IE7 (отказывается удалять пробел в конце).

Есть идеи ?! Может быть, решение для регулярных выражений?

Ответы [ 4 ]

21 голосов
/ 24 марта 2010

вы, скорее всего, забыли о jquery цепочке ...

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

$('#selector').trim($('#selector').text())

не ленитесь с

$('#selector').text().trim();//this is wrong...

EDIT

или, как @Laserson упростила его еще лучше, с $.trim($(selector).text());

5 голосов
/ 24 марта 2010

Так вот в чем суть происходящего. У меня был некоторый текст в элементе span, и после этого текста была гиперссылка / изображение, которое пользователь мог щелкнуть, чтобы удалить текст из строки, на которой он был (см. Код ниже). Однако я поместил   после текста элемента span (в тексте гиперссылки), чтобы добавить немного отступа между текстом span и изображением «delete». Так что, хотя я получал доступ к тексту элемента и обрезал $.trim($(this).parent().text());, он все равно содержал бы это место в конце! Как только я удалил это дополнительное пространство, все заработало нормально. До сих пор не знаю, почему $.trim() не позаботится об этом?!

<div>
  <span>
    <strong>SomeText</strong>
  </span>
  <a href="javascript:void(0);" onclick="removeMe();">&nbsp;
    <img src="delete.png" width="15" height="15" border="0" name="imgRemove" />
  </a>
</div>
0 голосов
/ 24 марта 2010

jquery использует / ^ \ s + | \ s + / g в своем методе усечения -

Любое завершающее пространство должно быть добавлено после его возврата.

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

Если обрезка действительно возвращается с завершающим пробелом, используйте text.replace (/ ^ \ s + | \ s + / g, '').

0 голосов
/ 24 марта 2010

Да, у меня есть идея. Пробел в конце находится не в том элементе, для которого вы вызываете функцию text (). Это может произойти в IE, потому что он обрабатывает пробелы по-другому, чем Firefox, и даст ему свои собственные элементы, а Firefox не будет. Это всего лишь догадка, потому что ваш вопрос мало что дает.

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