jquery
  • html
  • internet-explorer-7
  • 2010-07-21 7 views 0 likes 
    0

    je le code suivant fonctionne bien dans IE8 (et IE8 en mode de compatibilité IE7) mais pas générer les bons résultats dans IE7jQuery <AREA> appendTo ne fonctionne pas dans IE7

    var areaId = "eventArea" + index; 
    var tempArea = $("<AREA id='" + areaId + "' shape='rect' coords='" + value.x + "," + value.y + "," + (parseInt(value.x) + parseInt(value.w)) + "," + (parseInt(value.y) + parseInt(value.h)) + "' >"); 
    tempArea.appendTo($("map[name='wavImageMap']")); 
    $("#" + areaId).click(function() { alert('test'); }); 
    

    Sur IE8 ces HTML <AREA> éléments sont créés et ajoutés avec succès. Mais pas sur IE7. L'événement click ne se passe pas là.

    +0

    Pouvez-vous faire un meilleur travail décrivant quelles sont les différences entre IE8 et IE7. Pas tout à fait clair. – JasCav

    +0

    @Jason, j'ai besoin de lier des événements à ces éléments AREA pour les clics et le survol de la souris (pour afficher une info-bulle). Cela fonctionne très bien dans IE8. Dans IE7, les événements ne se déclenchent pas. On dirait que l'élément n'est pas créé. –

    +0

    Puisqu'il n'y a aucune indication visuelle sur le fait que l'élément AREA est créé. Est-ce que quelqu'un sait d'un moyen facile de détecter qu'il est créé, et dans la bonne position? Jusqu'à présent, j'utilise l'événement click pour détecter qu'il est là –

    Répondre

    0

    Le problème dans ce cas n'est pas avec le <area>, mais dans la façon dont IE7 convertit les coordonnées en une chaîne. L'utilisation de value.x.toString() au lieu de value.x résout le problème.
    Le code alors ressemblera à ceci:

    var tempArea = $("<AREA id='" + areaId + "' shape='rect' >"); 
    tempArea[0].coords = value.x.toString() + "," + value.y.toString() + "," + ((parseInt(value.x) + parseInt(value.w))).toString() + "," + ((parseInt(value.y) + parseInt(value.h))).toString(); 
    
    0

    Cela ne peut pas être le problème, mais j'ai rencontré un problème similaire et l'ai résolu en utilisant la fonction live de jQuery. Comme si ...

    var areaId = "eventArea" + index; 
    var tempArea = $("<AREA id='" + areaId + "' shape='rect' coords='" + value.x + "," + value.y + "," + (parseInt(value.x) + parseInt(value.w)) + "," + (parseInt(value.y) + parseInt(value.h)) + "' >"); 
    tempArea.appendTo($("map[name='wavImageMap']")); 
    $("#" + areaId).live('click', function() { 
        alert('test'); 
    }); 
    

    en direct() assure essentiellement que l'événement est attaché à tout élément qui existe maintenant ou dans l'avenir (si vous créez des éléments à la volée, par exemple).

    +0

    'live' n'a pas aidé :( –

    0

    J'ai eu des problèmes en utilisant .appendTo() dans IE dans le passé et je ne peux pas vous dire pourquoi; mais le changer pour .append() a fonctionné pour moi.

    +0

    Testé à la fois' .append (élément) 'et' .append (HTML) 'avec les mêmes résultats. IE8, échoue sur IE7 :( –

    Questions connexes