2016-06-09 5 views
0

Ich muss eine Umgehung für einen Link-Fehler in Swiper JS mit onClick(swiper,e) machen.Wie kann ich das nächste Element finden, wenn alles, was ich habe, HTML-String X ist?

swiper: Ist der gesamte swiper-Behälter
e: ist ein Mouseevent in dem die unbewegliche target HTML-Zeichenfolge enthält, z.B. <div class="start-time">16:00</div>

<div class="swiper-container"> 
    <div class="swiper-wrapper"> 
    <div class="swiper-slide">Slide 1</div> 
    <div class="swiper-slide">Slide 2</div> 
    <div class="swiper-slide"> 
     <a href="abc" target="_blank"> 
     <div class="start-time">16:00</div> 
     <div class="flag"><img ...></div> 
     <div class="name col-4">Buritos</div> 
     </a> 
    </div> 
    ... 
    </div> 
</div> 

Jetzt brauche ich Standard swiper Verhalten zu verhindern, den Link zu finden und ein neues Fenster zu öffnen. Dieser Code funktioniert nicht, aber Pseudo-Code für wie ich es will

onClick: function(swiper, e) { 
     e.preventDefault(); 
     let target = $(e.target); // HTML is now jQuery 
     let slide = target.closest('swiper-slide'); //Not working 
     let link = slide.find('a').attr('href'); 
     window.open(link); 
    }, 

Ich bin fest an die Eltern zu finden swiper-slide, wenn der Benutzer ein beliebiges Element innerhalb der Folie klickt. Ich dachte target.closest('swiper-slide') würde den Trick tun, aber es tat es nicht.

Jede Hilfe sehr geschätzt.

+0

Bedeutung den "swiper-wrapper" finden? – guradio

+0

Welches Element ist 'e.target'? –

+1

Sie sollten einen Punkt vor 'swiper-slide' in 'engest()' einfügen, um der Klasse ".swiper-slide" zu entsprechen. –

Antwort

1

Dies sollte funktionieren:

onClick: function(swiper, e) { 
    e.preventDefault(); 

    var hyperlink = $(e.target).closest('a'); 

    window.open(hyperlink.attr('href')); 
}, 
0

Sie können $.parents() verwenden mehr als eine Ebene nach oben aus dem klickten Element zu durchqueren und einen Selektor passieren die, die Sie wie folgt finden wollen:

onClick: function(swiper, e) { 
    e.preventDefault(); 
    let target = $(e.target); // HTML is now jQuery 
    let slide = target.parents('.swiper-slide')[0]; 
    let link = slide.find('a').attr('href'); 
    window.open(link); 
}, 
+0

'[0]' gibt ein DOMElement zurück, so dass 'slide.find()' einen Fehler zurückgibt. Wenn 'engste()' nicht für das OP funktioniert, wird 'eltern()' auch nicht. –

+0

Wenn Sie nur die HREF brauchen, warum verwenden Sie nicht einfach $ (e.target) .closes ('a'). Attr ('href')? – levon

+0

@RoryMcCrossan du hast Recht, mein Fehler. – levon

Verwandte Themen