2010-04-21 10 views
0

Im essayant de prendre un lien soit lorsque cliqué ou survolez sur être capable de saisir l'attribut href et dire si c'est un hyper-lien ou non. Aussi je veux qu'il soit capable de me dire si c'est un hyper-lien vers mon propre site. Plus divers autres filtres. Le but principal de ceci est que quand un lien interne est cliqué il dira à ajax de saisir le contenu, beaucoup de mes liens sont générés (via wordpress) donc je ne peux pas les modifier trop. Un autre but est que je puisse aussi ouvrir tous les liens externes sur une nouvelle fenêtre.trouver des liens qui sont hyper-liens dans jQuery

J'ai une solution qui fonctionne sur une page de test simple mais quand je la mets dans une page de travail, elle casse. Je sais que je rends probablement cela plus difficile alors ça devrait l'être.

Voici mon code

$(function(){ 
    $('a').live('click', function(){ 
     var x = $(this).attr('href'); 

     $(this).parent('div').append('<div id="test">' + x +'</div>'); 
     $('#test:contains("http")').css('color', 'red'); 
     $('#test:contains("sitename")').css('color', 'black'); 
     $('#test:contains("admin")').css('color', 'red'); 
     if($('#test').css('color') == 'red'){ 

     alert('external link'); 
     $('#test').remove(); 
     return true; 

     }else{ 

     alert('external link'); 
     $('#test').remove(); 
     return false; 

     } 
    }); 
}); 

Merci pour votre aide

Répondre

1
$('a').live('click', function(){ 
    var href = $(this).attr('href'); 

    if(/http:\/\//.test(href) || /admin/.test(href)){ 
     //alert('external link'); 
     $(this).attr('target', '_blank'); 
     return(true); 
    } 

    if(/sitename/.test(href)){ 
     //alert('internal link'); 
     $.ajax({}); 
     return(false); 
    }  
} 

qui est une meilleure approche que je suppose. Devrait travailler, mais non testé. La regex peut/et devrait être affinée.

+0

une bien meilleure approche. merci fonctionne comme un charme. –

1

Vous pouvez également utiliser la syntaxe du sélecteur jQuery (http://api.jquery.com/attribute-starts-with-selector/):

$('a[href^=http://], a[href^=/admin/]').live('click', function(){}); 
$('a[href^=/sitename/]').live('click', function(){}); 

Si vous extrayez l'API de sélection, vous trouverez des plus sélecteurs (par exemple se termine par X, contient X, etc.).

+0

ceci est une information utile –

Questions connexes