обратный вызов плагина jQuery - PullRequest
2 голосов
/ 09 октября 2009

хорошо, так что я пытаюсь сделать это плагин, который возвращает массив jquery для использования в функции обратного вызова.

допустим, у меня есть этот код``

(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);

Я хочу вернуть эти картинки и получить к ним доступ в функции обратного вызова. как то так

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

спасибо

Ответы [ 2 ]

1 голос
/ 28 октября 2009
(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)

            });
    }
});

и когда я вызываю плагин, я называю его так:

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

эта функция после опций представляет обратный вызов

0 голосов
/ 09 октября 2009

Я вижу, что вы пытаетесь сделать. Если это все, что вы делаете, вы можете подумать о добавлении прослушивателя событий live в свой плагин.

Попробуйте это:

(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);

С помощью этой техники все img, независимо от того, когда они добавлены в DOM, будут скрыты при нажатии. То есть ... после того, как плагин вызывается, конечно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...