2009-12-19 16 views
19

Intenté muchas variaciones para poner target="_blank" en enlaces con jQuery, pero no puedo hacer que funcione.Cómo poner target = "_ blank" en jQuery?

Aquí está mi código:

var thumbfile = "<?php echo $smit_iturl_v; ?>"; 
jQuery(document).ready(function() { 
    var actualHost = jQuery.trim(jQuery.url.attr("host")); 
    jQuery("a img").each(function (i) { 

     if (jQuery.trim(jQuery.url.setUrl(jQuery(this).attr("src")).attr("host")) == actualHost &&  
      (jQuery.url.setUrl(jQuery(this).attr("src")).attr("path")).indexOf("wp-content") != -1 && 

      isImage(jQuery.url.setUrl(jQuery(this).attr("src")).attr("file"))) { 

      var parentTag = jQuery(this).parent().get(0).tagName; 
      parentTag = parentTag.toLowerCase(); 

      if (parentTag == "a" && 
      jQuery.url.setUrl(jQuery(this).parent().attr("href")).attr("host") == actualHost && 
      jQuery.url.setUrl(jQuery(this).parent().attr("href")).attr("path").indexOf("wp-content") != -1 && 
      isImage(jQuery(this).parent().attr("href"))) { 

       var description = (jQuery(this).attr("alt") == "") ? jQuery(this).attr("title") : jQuery(this).attr("alt"); 
       jQuery(this).parent().attr("href", thumbfile + 
         "?title=" + jQuery(this).attr("title") + 
         "&description=" + description + 
         "&url=" + stripDomain(jQuery(this).parent().attr("href")) 

       ); 
      } 
     } 
    }); 

¿Cómo puedo hacerlo?

Respuesta

16

Puesto que usted está interactuando sobre los elementos de imagen que son niño de un ancla, al comienzo del bucle se puede establecer:

//... 
jQuery("a img").each(function (i) { 
    // 'this' is the img element, you should get the parent anchor 
    jQuery(this).parent().attr('target', '_blank'); 
    //... 
}); 
72

Demasiada información! Esto debería funcionar bien:

$("a").attr("target","_blank"); 

Vea el ejemplo aquí http://jsbin.com/evexi/edit. Funciona perfectamente

+9

Si solo desea abrir enlaces externos en una nueva ventana, esta expresión regular podría ser útil. '$ (" a [href^= 'http'] "). attr ('target', '_ blank');' –

+0

gracias amigo, me ayudó también – DextrousDave

+0

¡Loco útil, gracias! –

10

Para añadir a la simplicidad increíble de esta respuesta, que fue super útil, por cierto, puede orientar varios tipos de enlaces, por ejemplo:

$("#whatever_id a, #another_id, #yet_another, #etc").attr("target","_blank"); 

Hemos de tener los diferentes id separados por comas.

7

Puede dar todos los enlaces que desea abrir en una nueva ventana de una clase, por ejemplo, 'blanco en blanco';

<a href='#' class='any existing classes target-blank'>Opens in a new window</a> 

continuación, añadir una gota de jQuery

$("a.target-blank").attr('target','_blank'); 

XHTML y un DOM que entiende target = '_ blank'!

Cuestiones relacionadas