jQuery - разоблачение событий - PullRequest
2 голосов
/ 19 ноября 2010

Я пытаюсь написать свой собственный плагин jQuery.Моя цель - прикрепить его к форме для отмены представления.У меня есть основы, но моя проблема заключается в «разоблачении» событий.

Вот что я хочу сделать:

$('#myobject').myplugin({

    setting1: 'somevalue',
    beforesubmit: function(){ ... }

});

Вот что у меня есть

$.fn.myplugin= function (options) {

    var settings = {
        setting1: '',
        beforesubmit: function() { return true; }
    };

    return this.each(function () {
        // If options exist, lets merge them
        // with our default settings
        if (options) {
            $.extend(settings, options);
        }

        //fire beforesubmit

        $(this).live("submit", function(){

            //do stuff
        }

    });

};

??лежит в том, как я запускаю событие.Я хочу, чтобы у меня были и другие события, такие как onerror, aftersubmit и т. Д.

1 Ответ

4 голосов
/ 19 ноября 2010

Вы можете просто вызвать метод, заменив это:

//fire beforesubmit

С этим:

if(settings.beforesubmit) settings.beforeSubmit();

Вы также можете сделать это, добавив любые параметры обратного вызова, например:

if(settings.beforesubmit) settings.beforeSubmit.call(this, someVariable);

Альтернатива (не подходит для некоторых ситуаций) - запуск собственных событий и работа модели привязки jQuery, например:

$(this).trigger("beforeSubmit");

Затем в другом месте, привязать к событию, например:

$(".someElement").bind("beforeSubmit", function() { alert("submit!"); });
...