2013-02-19 8 views
7

J'ai configuré certains Jquery en fonction d'autres questions/réponses StackOverflow. Le but de ce script est de faire d'un div entier un lien basé sur n'importe quelle balise href qui se trouve dans ce div.Jquery Ouvrir dans un nouvel onglet (_blank)

Cela fonctionne très bien, mais je dois le définir à _blank pour ouvrir dans un nouvel onglet. J'ai essayé ci-dessous sans aucune chance.

$(document).ready(function() { 
    $(".product-item").click(function() { 
     $(this).target = "_blank"; 
     window.location = $(this).find("a").attr("href"); 
     return false; 
    }); 
}); 

EDIT

Merci pour l'aide, mais aucune de ces réponses fonctionnent réellement. Si quelqu'un peut coller le code complet qui fonctionne réellement, plutôt que de petits extraits sans test si cela fonctionne. Merci.

EDIT 2

Merci à kristinalim, pour fournir une solution de travail complète.

+0

Cela a été répondu avant: http://stackoverflow.com/questions/2827637/how-ca n-i-ouvre-un-lien-dans-une-nouvelle-fenêtre – Ulises

+0

'window.location' ** toujours ** fait référence à l'emplacement de la fenêtre courante. Le changer affectera ** seulement ** la fenêtre actuelle. – techfoobar

+0

$ ("produit article ") cliquez sur (function() { \t $ (this) .Find (" a ") attr (" href").. \t window.open (this); \t retour faux; \t }); – user2085752

Répondre

22

liens de réglage sur la page woud nécessitent une combinaison de @Ravi et @ réponses de ncksllvn:

// Find link in $(".product-item") and set "target" attribute to "_blank". 
$(this).find("a").attr("target", "_blank"); 

Pour ouvrir la page dans une autre fenêtre, reportez-vous cette question: jQuery click _blank Et voir this reference pour window.open options de personnalisation.

Mise à jour:

Vous auriez besoin quelque chose le long:

$(document).ready(function() { 
    $(".product-item").click(function() { 
    var productLink = $(this).find("a"); 

    productLink.attr("target", "_blank"); 
    window.open(productLink.attr("href")); 

    return false; 
    }); 
}); 

Notez l'utilisation de .attr():

$element.attr("attribute_name")     // Get value of attribute. 
$element.attr("attribute_name", attribute_value) // Set value of attribute. 
+0

Salut Kristina, cela semble être sur la bonne voie. Pouvez-vous regarder le code ci-dessous et laissez-moi savoir ce qui ne va pas. – user2085752

+0

$ (document) .ready (function() { $ (". Product-item"). Cliquez sur (function() { \t $ (this) .find ("a"). Target = "_blank"; \t window.open (this.href); \t return false; \t }); }); – user2085752

+0

Veuillez voir la réponse mise à jour. – kristinalim

3

Remplacer cette ligne:

$(this).target = "_blank"; 

Avec:

$(this).attr('target', '_blank'); 

qui établira son HREF _blank.

1

Vous ne pouvez pas définir l'attribut cible sur div, car div div ne sait pas comment gérer les requêtes http. au lieu de définir l'attribut cible pour la balise link.

$(this).find("a").target = "_blank"; 
window.location= $(this).find("a").attr("href") 
Questions connexes