$('img').height()
restituisce 0
in chrome, ma restituisce l'altezza effettiva in IE e firefox.altezza immagine utilizzando jquery nel problema chrome
Qual è il metodo effettivo per ottenere l'altezza dell'immagine in chrome?
$('img').height()
restituisce 0
in chrome, ma restituisce l'altezza effettiva in IE e firefox.altezza immagine utilizzando jquery nel problema chrome
Qual è il metodo effettivo per ottenere l'altezza dell'immagine in chrome?
La mia ipotesi è che questa funzione venga chiamata prima che l'immagine abbia finito di caricare. Puoi provare a mettere un ritardo sulla funzione per vedere se questo è effettivamente il caso? In questo caso, puoi imbrogliare usando un timer prima di eseguire la funzione.
È leggermente più complicato rilevare quando un'immagine è stata caricata. Have a look at this script for some ideas - forse potrebbe funzionare per te.
Oppure eseguire lo script in un evento onload del corpo, anziché l'evento pronto per il documento. Non è così preciso, poiché l'intero documento deve essere caricato, ma puoi essere sicuro che l'immagine sia stata caricata (supponendo che sia un'immagine nel codice, non qualche cosa caricata AJAX). –
@Frank, l'onload del corpo viene chiamato al termine della creazione del DOM, non è garantito che le risorse all'interno del DOM abbiano completato il caricamento (immagini incluse). – JasonWyatt
Provare a utilizzare un pre-caricatore di immagini, here's one Ho scritto per una risposta a another question.
Come ha detto Josh, se l'immagine non è ancora stata caricata completamente, jQuery non saprà ancora quali sono le dimensioni. Provare qualcosa di simile per garantire la si sta solo tentando di accedere sue dimensioni dopo che l'immagine è stata completamente caricata:
var img = new Image();
$(img).load(function() {
//-- you can determine the height before adding to the DOM
alert("height: " + img.height);
//-- or you can add it first...
$('body').append(img);
//-- and then check
alert($('body img').height());
}).error(function() {
//-- this will fire if the URL is invalid, or some other loading error occurs
alert("DANGER!... DANGER!...");
});
$(img).attr('src', "http://sstatic.net/so/img/logo.png");
una correzione leggermente brutto ma efficace che ho usato era usare un linguaggio backend, nel mio caso php, per ottenere l'altezza e impostarla sull'immagine prima di inviarla al browser.
è brutto, ma semplice e veloce
Precaricamento l'immagine e la creazione di una funzione di callback potrebbe essere quello che stai cercando:
// simple image preloader
function getHeight(el,fn) {
var img = new Image();
img.onload = function() { fn(img.height); };
img.src = el.attr("src");
}
$("img").each(function(){
getHeight($(this),function(h){
// what you need to do with the height value here
alert(h);
});
});
Proprio avuto lo stesso problema: impostare la larghezza e altezza in anticipo tramite CSS o HTML.
Avendo appena fatto alcuni esperimenti con questo ho trovato che
$(this).height();
Restituisce 0 - tuttavia se si utilizzano solo pianura vecchio JS
this.height;
ho l'altezza dell'immagine corretta.
Hai specificato 'height' nel tag' img' o nel CSS? –
è visibile, ovvero è stato visualizzato? –
Fai cose non su '$ (document) .ready' ma su' $ (window) .load'. Ha funzionato per me - http://www.fortwaynewebdevelopment.com/jquery-width-or-height-ways-returns-0-fix/ – jibiel