Visualizzazione dei risultati da 1 a 7 su 7

Discussione: JQuery - Offset e IE 8

  1. #1

    JQuery - Offset e IE 8

    Ho un problemino che non riesco a risolvere. Ho scritto questa funzioncina:

    Codice PHP:
    function showActionBox (element) {
        var 
    homeId "#views-home";
        var 
    offset element.children('img').offset();
        var 
    actionBox = $('<div></div>');
        
    actionBox.hide();
        
    actionBox.addClass ('views-action-box');
        
    actionBox.mouseleave(function() {
           $(
    this).fadeOut(500);
           $(
    this).remove();
        });
        
    actionBox.offset ({top: (offset.top 10), left: (offset.left 10)});
        
    element.children('img').clone(false).appendTo(actionBox);

        var 
    textElements = $('<div></div>');
        
    textElements.append('<h6>Item name here</h6>');
        
    textElements.append('

    Long description here if any...</p>'
    );
        
    actionBox.append (textElements);

        var 
    actions = $('<ul>[/list]');
        
    actions.append ('[*][url="#"]Open[/url]');
        
    actions.append ('[*][url="#"]Delete[/url]');
        
    actions.append ('[*][url="#"]Move to...[/url]');
        
    actions.append ('[*][url="#"]Copy to...[/url]');
        
    actions.append ('[*][url="#"]Share...[/url]');
        
    actionBox.append (actions);

        $(
    homeId).append (actionBox);
        
    actionBox.fadeIn(500);

    Viene chiamata all'hover su un'icona, e l'effetto che voglio ottenere e' questo:



    Funziona perfettamente con Firefox, Chrome, Opera, Safari, ma con IE8 mi da' un errore alla riga 145 di jQuery.min. La riga incriminata e':

    codice:
    function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);/**ERRORE QUI**/
    var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&
    f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+
    (self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=

    Avete idea di come posso risolvere? Qualcuno ha mai avuto lo stesso problema?
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    actionbox è in position relative o absolute?
    la variabile offset cosa contiene? prova a fare un console.log della variabile.
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Hai ragione, manca qualche info:

    1- la funzione viene chiamata in questo modo:
    Codice PHP:
    //iconBox e' l'elemento composto di icona e testo che mi lancia la callback quando sto sopra col mouse per 2 secondi
    iconBox.hoverIntent ({over: function() {showActionBox ($(this));}, out: function() {return true}, timeout2000}); 
    2- il CSS di actionBox e' questo:
    codice:
    div.views-action-box {
        width: 300px;
        height: 120px;
        background-color: #FFF;
        border: 1px solid #666;
        -moz-border-radius: 5px;
        -webkit-border-radius: 5px;
        border-radius: 5px;
         -moz-box-shadow: 1px 1px 5px #999;
        -webkit-box-shadow: 1px 1px 5px #999;
        box-shadow: 1px 1px 5px #999;
        position: absolute;
        z-index: 1500;
    }
    offset viene definita nella seconda riga della funzione, e dovrebbe contenere le coordinate dell'angolo superiore sinistro dell'icona. E Firebug mi dice ad esempio per una delle icone
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  4. #4
    uppettino
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  5. #5
    prova a impostare il top ed il left con la funzione css() piuttosto che offset()
    Ubuntu rulez!! :P

  6. #6
    Originariamente inviato da simotenax
    prova a impostare il top ed il left con la funzione css() piuttosto che offset()
    Domani provo.
    La cosa strana e' che non e' che non funzioni con Explorer, mi da' proprio un errore
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  7. #7
    Funziona

    Comunque prendo il valore iniziale usando offset(), ma poi setto top e left usando css(), e con quella tutto funziona!

    Thanks simotenax
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.