jquery
  • firefox
  • google-chrome
  • 2010-01-13 5 views 0 likes 
    0

    J'ai écrit ce code et il fonctionne bien dans Google Chrome, mais quand il s'agit de Firefox et d'autres navigateurs principaux, il ne change même pas un petit peu :jQuery Code fonctionne sur Google Chrome mais pas Firefox, IE et même Safari

    jQuery("div[style*='line-height:25px']").contents(":not(nodeType!='1',br)").wrap("<div style='margin-bottom:9px;line-height:normal;margin-top:4px'>"); 
    jQuery("div[style*='line-height:25px'] br").remove(); 
    

    il peut sembler un peu bizarre, mais c'est la chose que je veux résoudre un problème vraiment frustrant, donc de toute façon moi de vous donner les spécifications sur le système:

    • jQuery 1.3.2 avec noConflict() méthode pour éviter les conflits avec le prototype $
    • Scriptaculous 1.7.1_beta3
    • Prototype 1.5.1
    • Et oui, je suis en utilisant la fonction jQuery(document).ready() pour faire des choses après DOM est prêt.

    Ce sont les bibliothèques également intégrées sur la page.

    Pour Recommandations: Je n'ont pas développé cette page et d'autres centaines de pages comme celui-ci et le problème est qu'ils sont toutes les pages statiques et en utilisant shtml pour partager au moins un code commun. Mais je ne peux supprimer aucune de ces bibliothèques, car cela signifie que je devrai éditer beaucoup de pages et cela me coûtera des semaines. Donc, ce que je cherche, ce sont des solutions temporaires comme celle ci-dessus.

    Merci d'avance.

    HTML partiel:

    <div style="font-size: 13px; line-height: 25px;"> 
        <!-- BULLETS MORE --> 
        <div style="line-height: normal;"> 
        Fine quality, full grain pebble leather 
        </div> 
        Smooth Classic Napa leather construction 
        <br /> 
        Lateral footprint with top access 
        <br /> 
        Durable belt clip 
        <br /> 
        Top flap with snap closure for added security 
        <br /> 
        Soft velvet lining with light protective layer 
        <br /> 
        Bottom push-through cutout for easy Motorola Droid removal 
        <br /> 
        Simple Scandinavian rounded design 
        <br /> 
        Sena craftsmanship and quality 
        <br /> 
    </div> 
    
    +0

    Pouvez-vous nous donner toute la production HTML (censurer le contenu/exclure les images si nécessaire) afin que nous puissions jouer avec? –

    Répondre

    1

    Que diriez-vous de les réécrire un peu?

    jQuery("div").filter(lineHeight).contents(nonElementNodes).wrap("<div style='margin-bottom:9px;line-height:normal;margin-top:4px'>"); 
    
    jQuery("div").filter(lineHeight).find("br").remove(); 
    
    function lineHeight() { 
        return this.style.lineHeight == "25px"; 
    } 
    
    function nonElementNodes() { 
        return this.nodeType !== 1 || this.tagName !== 'BR'; 
    } 
    
    0

    Je ne pense pas que votre sélecteur de contenu est correctement configuré. Vous devriez faire quelque chose comme:

    jQuery("div[style*='line-height:25px']").contents(":not(br)").filter(function(){return this.nodeType != 1;}).wrap("<div style='margin-bottom:9px;line-height:normal;margin-top:4px'>"); 
    jQuery("div[style*='line-height:25px'] br").remove(); 
    
    +0

    Cela n'a pas fonctionné non plus. Et 'nodeType = 1' est autorisé à être utilisé avec une chaîne de sélecteur. Voici un exemple: http://tinyurl.com/ycanhl2 – Tarik

    0

    Ne pas utiliser ' dans le sélecteur, il suffit:

    jQuery("div[style*=line-height:25px]") 
    
    +0

    Juste pour vous le dire, ce n'est pas la solution car même jQuery recommande d'utiliser '' 'et ça ne fonctionnera pas de cette façon :) – Tarik

    0

    yikes. jquery vous permet d'écrire des requêtes très puissantes, mais cela ne veut pas dire que vous devriez le faire.

    si vous avez le contrôle sur le HTML, vous devez ajouter certaines classes en cas de besoin et remplacer ce désordre avec des sélecteurs de classe, il fonctionnera dans tous les navigateurs et être plus rapide pour démarrer

    Questions connexes