Как использовать функцию jQuery trim() - программирование
Подтвердить что ты не робот

Как использовать функцию jQuery trim()

Как обсуждалось во многих вопросах о стеке - IE 8 не принимает .trim(), но инфраструктура jQuery позаботится об этом.

Я не знаю, как перевести мою функцию на использование этой версии обрезки (я думал, что уже использую jQuery), может кто-нибудь посоветует? Вот мой код:

$('input').val(function(index, val){
    return val.replace('Please Select', '').trim();
});

Это предназначено для замены строки ничем.

Я пробовал:

$('input').val(function(index, val){
    return val.replace('Please Select', '')$.trim();
});

но это было бесполезно.

4b9b3361

Ответ 2

В IE8 нет встроенного метода trim, как правило, я просто добавляю прототип:

if (!String.prototype.trim)
{
    String.prototype.trim = function()
    {
        return this.replace(/^\s+|\s+$/g,'');
    };
}

Это кратчайшее регулярное выражение для обрезки строки, но я слышал, что он говорит, что .replace(/^\s\s*/,'').replace(/\s*\s$/,'') (немного) быстрее... выбор за вами

Если вы действительно хотите использовать jQuery для этого, конечно, вам нужно будет сделать целевую строку контекстом вызываемого метода ($.trim вызывает метод на $ === объект jQuery), поэтому сделайте String a jQ object:

$('  foo bar  ').trim();//returns "foo bar"
//compared to augmented prototype:
'   foo bar  '.trim();//returns "foo bar"

Преимущество расширенного прототипа заключается в том, что у вас нет дополнительных накладных расходов на создание нового объекта jQuery, тогда как использование прототипа-подхода полагается на JS для переноса строки в собственный объект String и применения метода к этому, В принципе, это та же операция, но она должна быть немного более эффективной, потому что jQuery выполняет кучу проверок на любую строку, переданную конструктору jQuery ($())

Ответ 3

Попробуйте следующее:

$.trim(val.replace('Please Select', ''));

Здесь элемент Trim() в документации.