jQuery текст в сценарий ссылки? [Дубликат]

Используйте .nextAll() и :first , чтобы получить следующий родственный брат, который соответствует, а не следующий брат , если он соответствует, например это:

$("a[href*='#/link1'").nextAll('a[href*="#"]:first').click();

40
задан Elijah Manor 29 October 2008 в 16:29
поделиться

4 ответа

JQuery не собирается помогать Вам много здесь, поскольку Вы действительно не обеспокоены обходом/управлением DOM (кроме создания тега привязки). Если все Ваши URL были в < p класс = "URL" > теги тогда, возможно.

ваниль А решение JavaScript, вероятно, что Вы хотите, и поскольку судьба имела бы его, , у этого парня должны быть Вы, покрыл .

14
ответ дан Community 29 October 2008 в 16:29
поделиться
  • 1
    It' s не время выполнения по сравнению с различием времени компиляции, it' s разовое определением по сравнению с различием времени вызова. И функциональное определение и вызов происходят во времени выполнения. – BrenBarn 11 March 2014 в 19:53

ПРИМЕЧАНИЕ: обновленная и исправленная версия этого сценария теперь доступна в https://github.com/maranomynet/linkify (лицензия GPL/MIT)

<час>

Хм... мне, это походит на идеальную задачу для jQuery.

... что-то вроде этого оторвалось вершина моего ума:

// Define: Linkify plugin
(function($){

  var url1 = /(^|&lt;|\s)(www\..+?\..+?)(\s|&gt;|$)/g,
      url2 = /(^|&lt;|\s)(((https?|ftp):\/\/|mailto:).+?)(\s|&gt;|$)/g,

      linkifyThis = function () {
        var childNodes = this.childNodes,
            i = childNodes.length;
        while(i--)
        {
          var n = childNodes[i];
          if (n.nodeType == 3) {
            var html = $.trim(n.nodeValue);
            if (html)
            {
              html = html.replace(/&/g, '&amp;')
                         .replace(/</g, '&lt;')
                         .replace(/>/g, '&gt;')
                         .replace(url1, '$1<a href="http://$2">$2</a>$3')
                         .replace(url2, '$1<a href="$2">$2</a>$5');
              $(n).after(html).remove();
            }
          }
          else if (n.nodeType == 1  &&  !/^(a|button|textarea)$/i.test(n.tagName)) {
            linkifyThis.call(n);
          }
        }
      };

  $.fn.linkify = function () {
    return this.each(linkifyThis);
  };

})(jQuery);

// Usage example:
jQuery('div.textbody').linkify();

Это пытается превратить все случаи следующего в ссылки:

  • www.example.com/path
  • http://www.example.com/path
  • mailto:me@example.com
  • ftp://www.server.com/path
  • ... все вышеупомянутое, обернутое в угловые скобки (т.е. <... >)

Обладают:-)

57
ответ дан Cœur 29 October 2008 в 16:29
поделиться
  • 1
    @BrenBarn: за исключением того, что имена в функции не проверены во время компиляции также. f , предположил быть глобальным. – Martijn Pieters♦ 11 March 2014 в 19:54

Если Вы хотите решение от другой перспективы..., если можно выполнить страницы через php и Очиститель HTML, это может автоотформатировать вывод и linkify любые URL.

0
ответ дан DGM 29 October 2008 в 16:29
поделиться
  • 1
    положительная сторона, измененный второй пример... – Corley Brigman 11 March 2014 в 20:02

Я предлагаю, чтобы Вы сделали это на своих статических страницах прежде, чем представить к браузеру, или Вы будете продвигать нагрузку вычисления преобразования на Ваших бедных посетителей.:) Вот то, как Вы могли бы сделать это в Ruby (читающий из stdin, пишущий в stdout):

while line = gets
  puts line.gsub( /(^|[^"'])(http\S+)/, "\\1<a href='\\2'>\\2</a>" )
end

, Очевидно, Вы захотите думать о том, как сделать это столь устойчивым, как Вы требуете. Вышеупомянутое требует, чтобы все URL запустились с http и проверит для не преобразования URL, которые находятся в кавычках (т.е. который может уже быть в < href = "..." >). Это не поймает ftp://, mailto:. Это счастливо преобразует материал в местах как < script> тела, которые Вы не можете хотеть происходить.

самое удовлетворительное решение состоит в том, чтобы действительно сделать преобразование вручную с Вашим редактором, таким образом, Вы можете глазное яблоко и утверждать все замены. А хороший редактор позволит Вам сделать regexp замену со ссылками группы (иначе обратные ссылки), таким образом, это не должно быть грандиозное предприятие.

4
ответ дан Pistos 29 October 2008 в 16:29
поделиться
  • 1
    @MartijnPieters: Я don' t видят как that' s " except". I' m говорящий, что все происходит во времени выполнения, что означает, да, имена являются not' t проверенный до времени выполнения также. – BrenBarn 11 March 2014 в 19:56
Другие вопросы по тегам:

Похожие вопросы: