2012-10-31 3 views
6

Ho un metodo che sto sfruttando per lanciare un suggerimento relativo allo <td> all'interno. Tutto funziona alla grande in IE, Chrome, Safari, ma a Firefox mancano completamente tutti i metodi e viene avviato solo l'ultimo suggerimento nel DOM.jQuery .each() metodo non funziona in Firefox

Cosa dà?

http://jsfiddle.net/yus5b/

HTML:

<div class="stage"> 
    <div class="dealFinder"> 
     <h2 class="title">Deal Finder in Your Area</h2> 
     <table cellpadding="5"> 
      <tr> 
      <td class="text"> 
       <p class="makeModel"><a href="#">2012 Land Rover Range Rover Evoque</a><br>in Oak Lawn</p> 
      <a class="youSave" href="#" onclick="return false"> You Save at Least $14,810</a> 
      <div class="tooltip"> 
       <div class="inner"> 
       <b>2012 Land Rover Range Rover Evoque</b> 
       <span>Your Price $19,330</span> 
       <p>The National Average is <b>$21,500</b></p> 
       </div> 
      </div> 
      </td> 
      <td class="pic"> 
       <a href="#"><img src="http://placehold.it/113x75" /></a> 
      </td> 
     </tr> 
     <tr> 
      <td class="text"> 
      <p class="makeModel"><a href="#">2012 Land Rover Range Rover Evoque</a><br>in Oak Lawn</p> 
      <a class="youSave" href="#" onclick="return false"> You Save at Least $14,810</a> 
      <div class="tooltip"> 
       <div class="inner"> 
       <b>2012 Land Rover Range Rover Evoque</b> 
       <span><small>Your Price</small> $19,330</span> 
       <p>The National Average is <b>$21,500</b></p> 
       </div> 
      </div> 
      </td> 
      <td class="pic"> 
      <a href="#"><img src="http://placehold.it/113x75" /></a> 
      </td> 
     </tr> 
     </table> 
    </div><!-- .dealFinder --> 
</div>​ 

jQuery:

$(document).ready(function() { 
    // Tooltip 
    $('.tooltip').hide(); 
    $('.text').each(function(e) { 
     var self = this; 
     var tooltip = $(self).find('.tooltip'); 
     var youSave = $(self).find('.youSave'); 
     $(youSave).mouseenter(function(e) { 
     $(self).find(tooltip).fadeIn("slow"); 
     }); 
     $(youSave).mouseleave(function(e) { 
     $(self).find(tooltip).fadeOut("fast"); 
     }); 
    }); 
});​ 
+1

Davvero? 2 downvotes? Spiegazioni sul perché sarebbe fantastico. È una domanda chiara con un JSFiddle fornito? – robabby

+1

Lo vedo lanciare la descrizione del tool - è solo che il mouseleave viene attivato dal momento che il tooltip ottiene la messa a fuoco e quindi lo fa sparire. Utilizzando FF su Mac. –

+2

* "È una domanda chiara con un JSFiddle fornito?" * Http://meta.stackexchange.com/questions/149890/prevent-posts-with-links-to-jsfiddle-and-no-code Se JSFiddle va giù o è impantanato (come era ieri e altre volte nel passato) la tua domanda non sarebbe stata risolta. –

risposta

1

per l'avvio è scritto strano. Prova:

$('.text .youSave').mouseenter(function(){ 
    var item = $(this); 
    var tooltip = $('.tooltip', item.parent()).fadeIn(); 
}); 

//the same way for mouseleave 

e visualizzare i tooltip: nessuno di default perché cambiarlo con js?

Vedo il problema. Tooltip fadein dove si trova il tuo mouse e quell'evento di fuoco con il mouseleave. Facile da risolvere Tooltip deve essere .youSave elemento secondario:

<a class="youSave" href="#" onclick="return false"><span> You Save at Least $14,810<span> 
<div class="tooltip"> 
        <div class="inner"> 
        <b>2012 Land Rover Range Rover Evoque</b> 
        <span>Your Price $19,330</span> 
        <p>The Web2Carz National Average is <b>$21,500</b></p> 
        </div> 
</a> 

e poi JS:

$('.text .youSave').mouseenter(function(){ 
    var item = $(this); 
    var tooltip = $('.tooltip', item).fadeIn(); 
}); 
+0

Buona visione delle modifiche necessarie alla struttura HTML. Questo funziona per me. Grazie! – robabby

2
Ci

davvero dovrebbe quasi mai una necessità di una ogni funzione per scorrere sugli elementi solo per loro si legano ai gestori di eventi :

$(document).ready(function() { 
    $('.tooltip').hide(); 
    $('.youSave', '.text').on('mouseenter mouseleave', function() { 
     $(this).next('.tooltip').fadeToggle('slow'); 
    }); 
});​ 

FIDDLE

Il resto è solo questioni di posizionamento da posizionare il tooltip sulla parte superiore del tasto, e dovrebbe essere risolvibile con un po 'di CSS.

+0

Questo è un frammento molto più snello di jQuery, ma il comportamento è sempre lo stesso in FFox. – robabby

+0

Ottiene il tooltip giusto, ma sono praticamente uguali, ho cambiato il testo qui: http://jsfiddle.net/yus5b/5/ per mostrare che in effetti ottiene quello giusto. L'altro problema è solo un posizionamento CSS scadente. – adeneo

+0

Penso di aver capito. Firefox sta avendo un tempo di lettura interpretando la 'posizione: relativa' del genitore' 'sembra. Cambiando il tooltip in 'position: relative' piuttosto che in' absolute' mi sono stati forniti i tooltip in ogni '', concedendogli il design rotto, ma mostrato in effetti che i tooltip separati stavano caricando per ciascun elemento genitore relativo. – robabby