2010-01-07 8 views
0

iam faisant quelque chose comme çaélément cloné jquery Accès

var _orgElm = $(this).clone(true); 
    _orgElm.customResize(); 

    $.fn.custumResize = function() { 
     return this.each(function() { 
      // problem is here 
      // when i apply this function an element, it reads width correctly. 
      //but when i do this on elements clone it reads zero is there is, 
      // anyway i can read clone width also 
      $(this).width(); 
      //some code here ............ 
     }); 
    } 
+0

il est orthographié « sur mesure » – nickf

Répondre

2

Je soupçonne que le problème est que le clone n'a pas été ajouté au document encore. Essayez de l'insérer dans le DOM et ensuite obtenir la largeur.

+0

oui, je pensais aussi que, mais a ensuite essayé cette $ (this) Css (» largeur'); –

+0

Je pense que Doug a raison. Vous ne pouvez pas indiquer les dimensions d'un objet avant qu'il ne soit placé dans le document. Pourquoi? Parce que d'autres éléments peuvent affecter le style. Rendre l'élément invisible, l'ajouter au document et vérifier la largeur alors. – nickf

0

Vous avez une faute de frappe (custumResize -> customResize), mais vous le savez probablement déjà.

Quoi qu'il en soit, essayez de définir votre plug-in en dehors de l'événement ready comme ceci:

$.fn.customResize = function() { 
    return this.each(function() { 
     alert($(this).width()); 
    }); 
} 

$(function() { 
    var elem = $('.some-element'); 
    var clone = elem.clone(); 
    elem.customResize(); 
    clone.customResize(); 
}