Функция jQuery trim не работает в IE7?

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

Любые идеи?! Может быть, регулярное выражение?

Ответ 1

Итак, вот суть происходящего. У меня был некоторый текст в элементе span, и после этого текста была гиперссылка/изображение, которое пользователь мог щелкнуть, чтобы удалить текст из строки, на которой он был включен (см. Код ниже). Однако после текста элемента span (в тексте гиперссылки) я поместил  , чтобы поместить немного пробела между текстом диапазона и изображением "удалить". Так что, хотя я получал доступ к тексту элемента и обрезке $.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>

Ответ 2

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

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

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

не ленитесь

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

ИЗМЕНИТЬ

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

Ответ 3

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

Ответ 4

jquery использует /^\s + |\s +/g в своем методе обрезки -

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

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

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