jquery replace не работает для одинарных кавычек - PullRequest
3 голосов
/ 03 декабря 2011

Я пытаюсь удалить одиночную кавычку из моих опций в окне выбора, но приведенное ниже не работает:

$(function(){
  $("#agencyList").each(function() {
    $("option", $(this)).each(function(){
      var cleanValue = $(this).text();
      cleanValue.replace("'","");
      $(this).text(cleanValue);
    });
  });
});

У него все еще есть одинарная кавычка. Выбор строится с помощью цикла JSTL forEach. Кто-нибудь может увидеть, что может пойти не так?

1 Ответ

8 голосов
/ 03 декабря 2011

Вы должны присвоить новое значение с помощью cleanValue = cleanValue.replace(...).Кроме того, если вы хотите заменить все одинарные кавычки, используйте глобальный RegEx: /'/g (который заменяет все вхождения одинарных кавычек):

$(function(){
  $("#agencyList").each(function() {
    $("option", this).each(function(){
      var cleanValue = $(this).text();
      cleanValue = cleanValue.replace(/'/g,"");
      $(this).text(cleanValue);
    });
  });
});

Еще одна корректировка:

  • Заменили $(this) на this, так как нет необходимости заключать объект this в объект jQuery.
  • Ваш код может быть оптимизирован еще больше, благодаря объединению двух селекторов:

    $(function(){
      $("#agencyList option").each(function() {
          var cleanValue = $(this).text();
          cleanValue = cleanValue.replace(/'/g,"");
          $(this).text(cleanValue);
      });
    });
    
...