2010-03-23 3 views
10

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

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

+0

Можете ли вы показать демо? – SLaks

ответ

5

Итак, вот суть происходящего. У меня был некоторый текст в элементе 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> 
+3

ваше имя пользователя soooooooooooooooooooooooooooooooooooooo offensive –

+0

не работает, потому что '$ .trim' ищет фактические пробелы, которые не включают'   ', который является закодированным пространством без торможения, до'. trim' обеспокоен тем, что думает, что это просто другой текст, например «Home» или «Tom & jerry», надеюсь, что это поможет – Val

0

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

+1

Это не имеет смысла. Это простая строка. Происхождение пробелов не имеет значения. – SLaks

+0

Нет, это не имеет смысла, если обрезка не работает на строке, это простое регулярное выражение, оно должно работать. – mkoryak

+0

Я думаю, что текст возвращает строку, а не узлы/элементы, на которые вы ссылаетесь, если только он не использовал html вместо текста. Lol ответ не имеет значения. – Val

21

вы, скорее всего, забыли о Jquery chainning ...

попробовать это

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

не поленитесь с

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

EDIT

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

+0

Если бы я неправильно выбрал, объяснил бы, почему это работает в Firefox, но не в IE? – YourMomzThaBomb

+0

Возможно, вы должны обновить свой ответ с помощью примера скрипта, это было всего лишь предложение о вашей проблеме ie7 ... или использовать оператор if с помощью substr (-1,1), чтобы проверить, является ли последняя буква пробел – Val

+7

Проще: $ .trim() – Laserson

0

JQuery использует/^ \ S + | \ s +/г в обшивке ме-

Любого трейлинг пространство должен быть добавлен после того, как она возвращается ,

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

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