Создайте гиперссылку на Html URL с помощью Jquery, за исключением ссылки img src - PullRequest
0 голосов
/ 20 января 2011

Я пытаюсь сделать гиперссылку на каждый URL на моей странице. Есть такой код:

<div id="divC">
       Hello testing message 
       My profile link : http://stackoverflow.com/users/568085/abhishek and 
       my user account link : 
    <a href="http://stackoverflow.com/users/568085/abhishek">
    <img height="58" width="208" title="Stack Overflow profile for Abhishek at Stack Overflow, Q&amp;A for professional and enthusiast programmers" alt="Stack Overflow profile for Abhishek at Stack Overflow, Q&amp;A for professional and enthusiast programmers" src="http://stackoverflow.com/users/flair/568085.png?theme=dark">
    </a>
</div>

и я использовал ниже функцию javascript, чтобы добавить ссылку на каждый URL на странице содержимого:

<script>
   //call function for linking every url
    createLinks();
    function createLinks()
    {
        var exp=/(((\b(https?|ftp|file):\/\/))[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;     
        $("div#divC").each(function(index) {            
             $(this).html($(this).html().replace(exp, "<a target='_self' class='msg_links' href=$1>$1</a>"));
        });
    }
      </script>

В приведенном выше коде работает нормально, но я не хочу создавать ссылку на <img src='www.test.com'>. когда я запускаю это, он также создает ссылку в <img src="<a href='www.test.com'>www.test.com</a>" >,
Как мне избежать создания ссылки в <img> src.?

Ответы [ 2 ]

1 голос
/ 20 января 2011

Ах ... Я вижу, что ты делаешь.Я сделал это некоторое время назад, создавая плагин, который заменяет смайлики: D.Этот код работает лучше?

 //call function for linking every url
    createLinks();


    function createLinks()
    {
        var exp=/(((\b(https?|ftp|file):\/\/))[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;     


        $("div#divC")
        .contents()
        .filter(function () {

            if (typeof (Node) == 'undefined') {
                return this.nodeType == 3;
            }
            else {
                return this.nodeType == Node.TEXT_NODE;
            }
        }).each(function(index) {  

            var x = $(this)[0].nodeValue;
            if (x != '') {
               x = x.replace(exp, "<a target='_self' class='msg_links' href='$1'>$1</a>");
               $(this).replaceWith(x);
            }
        });
    }
0 голосов
/ 20 января 2011

Присвойте свой идентификатор тегу и сопоставьте его с вашим jquery

 1. <a id="target" href="your/target/url">
 2. ${"#target"}.attr('href','new/target/url')

Это потому, что вы используете .each (). Если вы хотите изменить несколько, используйте атрибут класса для ваших тегов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...