• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Plugin-aufruf element ansprechen

Flacx

Neues Mitglied
Hi
ich bins wieder. Sry hab eben viele Probleme ;)
Ich habe ein Plugin geschrieben, welches eine Infobox erscheinen lässt. jetzt will ich, dass man es mit
PHP:
$("#infobox").infobox("#content");
benutzen kann. infobox() ist das plugin. #infobox erscheint wenn man über #content drüber fährt.
Jetzt steht in der plugindatei:
PHP:
$(elm).mouseover(function (){
   $(this)....
});

Aber this spricht ja elm an. ich will, dass ich einen selektor habe der this ersetzt und #infobox anspricht.(siehe erster code)
Danke schonmal
 
Da ich nicht weiß, wie dein Plugin aufgebaut ist, weiß ich auch nicht wie man es in deinem Fall lösen könnte. Wenn ich jetzt allerdings den von jQuery empfohlenen Aufbau hernehme (Plugins/Authoring - jQuery Wiki), könnte man es so lösen:

PHP:
(function( $ ){  

var methods = {    
     init : function( selector ) {      
          alert($(this).attr('id')); // Ausgabe 'infobox' 
          $(selector).mouseover(function () {          
               alert($(this).attr('id')); // Ausgabe 'content'      
          });    
     }  
};  

$.fn.tooltip = function( method ) {        
     // Method calling logic    
     if ( methods[method] ) {      
          return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));    
     } else if ( typeof method === 'object' || ! method ) {      
          return methods.init.apply( this, arguments );    
     } else {      
          $.error( 'Method ' +  method + ' does not exist on jQuery.tooltip' );    
     }        
};})( jQuery );

EDIT: Sorry dass es so komisch aussieht, aber der Editor hier treibt mich noch zur Weißglut...
 
Zuletzt bearbeitet:
Danke erstmal für die Antwort. :) Auf genau der Seite hab ich übrgns. auch nachgeguckt. Fast das was ich suche. Nur sollte alert() infobox zurückgeben. Ich habs jetzt gelöst indem ich einfach #infobox angesprochen habe. Das sah so aus:
PHP:
$($("#infobox"))
Aber das ist natürlich statisch und plump. Wenn der Programmierer seine box evtl. somebox nennen möchte geht das dann nicht und das ist natürlich blöd :(
 
Okay, dann so:

PHP:
init : function( selector ) { 
var infobox = $(this);
$(selector).mouseover(function () {          
     alert(infobox);
});
}

EDIT: So ists besser verständlich

PHP:
var methods = {         
    init : function( selector ) {

        var infobox = $(this);        
        alert(infobox.attr('id')); // Ausgabe 'infobox'
        alert($(this).attr('id')); // Ausgabe 'infobox'

        $(selector).mouseover(function () {
                alert($(this).attr('id')); // Ausgabe 'content'
                alert(infobox.attr('id')); // Ausgabe 'infobox'
        });
    }  
};
 
Zuletzt bearbeitet:
Zurück
Oben