2016-04-06 7 views
1

ich meine Website neu zu gestalten, und ich habe ein Problem mit einem Hyperlink meinen Code sieht ich denke, das Problem in der js istHyperlink öffnet sich nicht in einem neuen Tab

<li class="product aopc"> 
     <a class="product-link"></a> 
     <div class="product-details mCustomScrollbar"> 
    <a target="_blank" href="my link in pdf"><i class="material-icons">picture_as_pdf</i></a> 
    </li> 

und ein Teil meiner js

// handle click events 
$container.on('click', '.product', function(event) { 
    var $this = $(this); 

    event.preventDefault(); 

    // if not already open, do so 
    if (!$this.hasClass('open')){ 
     var $openItem = $container.find('.open'); 

     // if any, close currently open items 
     if ($openItem.length) { 
      closeItem($openItem); 
     } 

     openItem($this); 
    } 
}); 

und diese: $ container.on ('klicken', '.close', function (event) { event.stopPropagation(); closeItem ($ (this) .closest ('.product')); });

function openItem($item) { 
    var $image = $item.find('.product-image'); 

    $item.addClass('loading').spin(spinJsConfiguration); 

    $image.attr('src', $image.data('src-large')); 

    $item.imagesLoaded(function() { 
     $item.spin(false).removeClass('loading').addClass('open'); 
     $container.addClass('item-open').isotope('reLayout'); 
     $item.append('<div class="close">&times;</div>'); 
    }); 
} 
function closeItem($item) { 
    $item.removeClass('open').find('.close').remove(); 
    $container.removeClass('item-open').isotope('reLayout'); 
} 
}); 

würde jede mögliche Hilfe

+0

Erhalten Sie Fehler? – itzmukeshy7

+0

Welchen Browser benutzen Sie? Safari wird nicht in neue Registerkarte als ihre Sicherheitsrichtlinie öffnen – Bsienn

+0

das Problem ist nicht in der HTML, weil ich ohne das Skript getestet habe und es funktioniert, aber ich verwende Isotop, um Produkte zu filtern und mit dem Skript Hyperlink funktioniert nicht – user3127127

Antwort

2

Der Link funktioniert nicht, weil der Click-Handler geschätzt. Ihr Link ist ein Kind der li .Produkt.

Der Click-Handler enthält preventDefault(). Durch das Entfernen würde der Link wieder funktionieren.

Edit: Basierend auf Ihren Kommentar, ändern Sie die folgenden Schritte aus:

$container.on('click', '.product', function(event) { 
    var $this = $(this); 

An:

$container.on('click', '.product-link', function(event) { 
    var $this = $(this).parent(); 

Und do nicht preventDefault() entfernen.

+0

aber wenn ich das entferne, halte mein Script an. Ich habe einen Test auf Codepen http://codepen.io/nathel/pen/MyExeR – user3127127

+0

Aktualisiert die Antwort für Sie. – Boratzan

+0

danke Boratzan, aber wenn ich auf das Produkt klicken, laden Sie die Seite – user3127127

Verwandte Themen