2012-02-02 13 views
6

Eventuali duplicati:
jquery .is(“:visible”) not working in Chrome.is jQuery (": visibili") funziona in Firefox, ma non Chrome

Sto cercando di ottenere tutti gli elementi visibili in un array. Funziona bene in Firefox ma non in Chrome.

Ecco il mio codice:

$.each (t.config.promoInput, function (i, v) { 
    var size = 0; 

    $.each ($(v).find('option'), function (i, v) { 
     $(v).show() // Show all options in <tt>$(v)</tt>. 
      .not(':first-child') // Don't hide <tt>(All)</tt>. 
      .not(':Contains("' + t.config.searchSpanInput.val() + '")') // Don't hide options that match the searchCriteria. 
      .hide(); // Hide everthing that doesn't match or isn't (All). 

     if ($(v).is(":visible")) { 
      size++; 
     } 
    }); 
}); 

In incrementi di dimensioni di Firefox, mentre Chrome dimensione rimane uguale a 0.

EDIT:: Contiene è la mia aggiunta alla libreria jQuery. È una versione insensibile alle maiuscole e minuscole di: contiene.

+2

Che aspetto ha l'HTML? – Pointy

+0

Si noti che è necessario chiudere entrambi i blocchi di codice 'each' –

+0

Inoltre, non sono sicuro, ma penso che il riferimento a i e v nelle funzioni annidate accederà a quelli nell'ambito genitore, quindi non è necessario passarli? –

risposta

0

Perché non è sufficiente controllare per la proprietà "display", se è "none" che è nascosto, se è "inline" di quello che è visibile:

$.each (t.config.promoInput, function (i, v) { 
    var size = 0; 

    $.each ($(v).find('option'), function (i, va) { 
     $(va).show() // Show all options in <tt>$(v)</tt>. 
      .not(':first-child') // Don't hide <tt>(All)</tt>. 
      .not(':Contains("' + t.config.searchSpanInput.val() + '")') // Don't hide options that match the searchCriteria. 
      .hide(); // Hide everthing that doesn't match or isn't (All). 

    }); 
    //add only visible options 
    if ($(va).css("display") === "inline") { 
     size++; 
    } 
}); 

Guardate qui http://jsfiddle.net/gwbTm/2/ (ho provato con Chrome).
Penso che l'impostazione della visibilità delle <option> è qualcosa che crea problemi con i browser (WIT soprattutto IE)

+0

Questo crea risultati diversi in Chrome e Firefox – Kloar

Problemi correlati