2010-10-15 6 views
0

Quelqu'un pourrait-il expliquer pourquoi this.rel redonne undefined et aussi ce que l'expression rationnelle est censée faire. Si this.rel n'est pas défini, l'expression regex ne fonctionnera pas non plus et provoque une sorte d'erreur car l'alerte en dessous ne se déclenchera pas?le plugin jquery dans ce cas donne undefined

$.fn.facebox= function(settings) { 
    init(settings) 

    function clickHandler() { 
     $.facebox.loading(true) 
alert($(this).attr('rel')); 
//alert(String(this.rel)); 
     // support for rel="facebox.inline_popup" syntax, to add a class 
     // also supports deprecated "facebox[.inline_popup]" syntax 
     var klass = this.rel.match(/facebox\[?\.(\w+)\]?/) 
    alert(klass); 
alert('ppp'); 
    // if (klass) klass = klass[1] 

     //fillfaceboxFromHref(this.href, klass) 
     return false 
    } 

    return this.click(clickHandler) 
    } 

merci, richard

+0

point-virgule ;;;;; – jAndy

+1

Vous ne devriez pas compter sur le moteur JavaScript pour ajouter des points-virgules à votre code. Crois-moi, ça va faire du débogage une douleur là-bas. – BoltClock

+0

Je sais, mais il ne provoque pas l'indéfini – Richard

Répondre

1

un jQuery-objet possède de nombreuses propriétés, l'un d'entre eux est un tableau avec les éléments trouvés.

Vous devez marcher à travers ce tableau et lier l'événement à ces éléments simples:

jQuery.fn.extend({ 
facebox: function() 
{ 
     //here this is a jQuery-object 
    function clickHandler() 
     { 
     //here this is a DOMElement 
     alert($(this).attr('rel')); 
     return false 
     } 

    return this.each(function() { 
       var self = jQuery(this); 
       self.click(clickHandler) 
      }); 

}});

+0

Y at-il une différence significative dans le faire comme ça jQuery.fn.extend ({ facebox: function() – Richard

+0

Je sais pourquoi this.rel ne fonctionne pas, c'est parce qu'il Je l'ai testé sur une balise link et cela a fonctionné: – Richard

+1

sur les différences: l'important je voudrais dire l'option d'ajouter plusieurs méthodes. $ .extend vous donne la possibilité de décider, si –