2009-10-09 8 views
2

ok, donc ce que j'essaie de faire est un plugin qui retourne un tableau jquery à utiliser dans une fonction de rappel.Rappel de plugin jQuery

disons que j'ai ce code``

(function($){ 
$.fn.extend({ 
    //plugin name 
    myPlugin : function(needed){ 

     var defaults = { 
      path : 'action.php', 
      source : '' 
     } 
     var needed = $.extend(defaults,needed); 

     //return 
     return this.each(function(){ 
      //it loads some pictures 
      $('#selector').load(needed.path,{'src':nedeed.source}) 

     }); 
    } 
}); 

}) (jQuery); Je veux retourner ces images et y avoir accès dans une fonction de rappel. quelque chose comme ça

$('#another_selector').click(function(){ 
     $(this).myPlugin({'source':'path/...etc'},function(){ 
       $('img').click(function(){ 
         $(this).remove(); 
}); 
}); 
    }); 

grâce

Répondre

1
(function($){ 
    $.fn.extend({ 
    //plugin name 
    myPlugin : function(needed,callback){ 

      var defaults = { 
        path : 'action.php', 
        source : '' 
      } 
      var needed = $.extend(defaults,needed); 

      //return 
      return this.each(function(){ 
        //it loads some pictures 
        $('#selector').load(needed.path,{'src':nedeed.source},callback) 

      }); 
    } 
}); 

et wheni appeler le plugin je l'appelle comme ceci:

$('#another_selector').click(function(){ 
    $(this).myPlugin({'source':'path/...etc'},function(){ 
      $('img').click(function(){ 
        $(this).remove(); 
}); 
}); 
    }); 

qui fonctionnent après les options représente le rappel

0

Je vois ce que vous essayez de faire. Si c'est tout ce que vous faites, vous pourriez envisager d'ajouter un écouteur d'événement live à votre plugin.

Essayez ceci:

(function($){ 
    $.fn.extend({ 
     //plugin name 
     myPlugin : function(needed){ 
       // New 
       $('img').live('click',function() { 
        $(this).remove(); 
       }); 
       // end new 
       var defaults = { 
         path : 'action.php', 
         source : '' 
       } 
       var needed = $.extend(defaults,needed); 

       //return 
       return this.each(function(){ 
         //it loads some pictures 
         $('#selector').load(needed.path,{'src':nedeed.source}) 

       }); 
     } 
    }); 
})(jQuery); 

Avec cette technique, tous img ce, peu importe quand ils sont ajoutés au DOM seront masqués lorsque vous cliquez dessus. C'est ... après l'appel du plugin, bien sûr.

+0

ok, donc mon plug-in est plus compliqué que cela, mais je viens simplifié pour être plus complet. Je vais essayer ce que vous avez dit et je vous ferai savoir si votre suggestion fonctionne pour moi. merci – kmunky

+0

sur mouseOver pour chaque image je veux une action survoler (apparaître/disparaître une barre d'édition). dans ce cas, comment devrais-je le faire? quelque chose comme ça? $ ('img'). Vivent ('mouseenter', function() { $ (this) .hover ( function() {pops la barre d'édition}, la fonction () {la barre d'édition est caché} ); }); – kmunky