Я использую приведенный ниже код, чтобы сделать ссылки связанными в надписях WordPress.Например, он успешно превращает http://google.com в google.com .Но когда я помещаю несколько заголовков в заголовок, он меняет только первый.Есть ли способ заставить его повторить действие на всех ссылках?
http://google.com
<script type="text/javascript"> jQuery().ready(function() { jQuery("p.wp-caption-text").each(function(n) { this.innerHTML = this.innerHTML.replace(new RegExp(" http://([^ ]*) "), " <a href=\"http://$1\">$1</a> "); }); }); </script>
RegExp по умолчанию находит только одно совпадение.
this.innerHTML = this.innerHTML.replace(new RegExp(" http://([^ ]*) ", "g"), " <a href=\"http://$1\">$1</a> ");
Добавление флага "g" выполняет глобальное совпадение.
Попробуйте вместо этого:
this.innerHTML = this.innerHTML.replace.replace(/http:\/\/([^ ]*)/g, " <a href=\"http://$1\">$1</a> ");
/ g означает, что это регулярное выражение является глобальным.
Незначительное изменение вашего RegExp вызова должно сделать это:
RegExp
jQuery().ready(function() { jQuery("p.wp-caption-text").each(function(n) { $(this).html($(this).html().replace(new RegExp(" http://([^ ]*) ", 'g'), " <a href=\"http://$1\">$1</a> ")); }); });
Ключ - аргумент модификатора 'g' - g обозначает global;другими словами: заменить все.
'g'
g
Вот соответствующий справочный материал: http://www.w3schools.com/jsref/jsref_regexp_g.asp