Ответ 1
$.trim(val.replace('Please Select', ''))
Как обсуждалось во многих вопросах о стеке - 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();
});
но это было бесполезно.
$.trim(val.replace('Please Select', ''))
В 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 ($()
)
Попробуйте следующее:
$.trim(val.replace('Please Select', ''));
Здесь элемент Trim() в документации.