2012-01-10 2 views
0

Я успешно сделал ссылки кликабельными, но как я могу заставить их снова вернуться в свое незаменимое состояние?Переключить ссылку, чтобы сделать кликабельную/unclickable

HTML

<div id="links"> 
    http://google.com <br> 
    http://facebook.com <br> 
    http://youtube.com 
</div> 
<button>Toggle!</button> 

JavaScript

$.fn.replaceUrl = function() { 
    var regexp = /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi; 
    this.each(function() { 
     $(this).html(
      $(this).html().replace(regexp,'<a href="$1">$1</a>') 
     ); 
    }); 
    return $(this); 
} 

$('button').click(function(){ 
    $('div').replaceUrl(); 
}); 

http://jsfiddle.net/6Zvs6/

+1

скрипку это великая вещь, чтобы добавить вопрос, но, пожалуйста, также разместить код на вопрос тоже. Таким образом, люди могут помочь вам, если jsFiddle будет в автономном режиме, и этот вопрос также будет полезен в будущем. –

ответ

3

Проверить эту скрипку: http://jsfiddle.net/2ttWS/

Код:

$.fn.replaceUrl = function() { 
    if($(this).find('a').length > 0) { 
     $(this).find('a').each(function() { 
      $(this).replaceWith($(this).text()); 
     }); 
    } 
    else { 
     var regexp = /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi; 
     this.each(function() { 
      $(this).html(
      $(this).html().replace(regexp, '<a href="$1">$1</a>')); 
     }); 
    } 
    return $(this); 
} 
+0

Ага, я вижу. Спасибо! – Michelle

0

Вы можете использовать это:

$.fn.removeHyperlink = function() { 
    var regexp = /<\/?a.*?>/gi; 
    this.each(function() { 
     $(this).html(
      $(this).html().replace(regexp,'') 
     ); 
    }); 
    linksShown = false; 
    return $(this); 
} 

Вот working example. Это не продвинутый, поэтому он может сломать некоторые сложные ссылки, но должен работать со всеми нормальными случаями.

0

Попробуйте

$.fn.replaceUrl = function() { 
    var regexp = /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi; 
    this.each(function() 
    { 
     if(($(this).html()).indexOf("href")!= -1) 
     { 
       var tx = ($(this).html()).split("</a>"); 
       var tmp=""; 
       for(var i=0;i<tx.length-1;i++) 
       { 
        if((tx[i].indexOf("href")!=-1)&&(tx[i].indexOf("<br>")==-1)) 
         tmp+=tx[i].split(">")[1]+" <br>"; 
      else 
       tmp+=tx[i].split(">")[2]+" <br>"; 
       } 

      $(this).html(tmp) 
     } 
     else 
     { 
     $(this).html(
         $(this).html().replace(regexp,'<a href="$1">$1</a>') 

     ); 
     } 
    }); 
    return $(this); 
} 

$('button').click(function(){ 
    $('div').replaceUrl(); 
}); 
Смежные вопросы