O melhor tutorial Como usar jQuery UI biblioteca de widgets em 2024. Neste tutorial você pode aprender natureza,Fechar notas,

Como usar jQuery UI biblioteca de widgets

Vamos criar uma barra de progresso. Tal como mostrado nos exemplos seguintes, os quais ligando jQuery.widget() para completar, leva-se dois parâmetros: um plug-in nome é para ser criada, um texto que contém o objecto é uma função do plug-in de suporte. Quando a ficha é chamado, ele cria uma nova instância de plug-in, todas as funções serão executadas no contexto deste exemplo. Esta duas maneiras importantes diferente padrão plugin jQuery. Em primeiro lugar, o contexto é um objeto, não um elemento DOM. Em segundo lugar, o contexto é sempre um único objeto, não uma coleção.

$.widget( "custom.progressbar", {
    _create: function() {
        var progress = this.options.value + "%";
        this.element
            .addClass( "progressbar" )
            .text( progress );
    }
});

Deve conter o nome do namespace plugin, neste exemplo, usamos uma custom namespace. Você só pode criar uma camada namespace profunda, portanto, custom.progressbar é um plug-in efetivo nome, very.custom.progressbar não um plug-in nome válido.

Vimos biblioteca de peças (Widget Factory) nos fornece duas propriedades. this.element é um objeto jQuery contendo um elemento. Se chamarmos o objeto plug-in jQuery que contém vários elementos, ele irá criar uma instância de plug-in separado para cada elemento, e cada instância terá o seu próprio this.element . A segunda propriedade, this.options , é uma opções de plug-in incluem todos os pares nome / valor-chave de hash (Hash). Estas opções podem ser passados ​​para o plug-in, como segue:

$( "<div></div>" )
    .appendTo( "body" )
    .progressbar({ value: 20 });

Quando chamamos jQuery.widget() , que, dando jQuery.fn (usado para criar um sistema plug-in padrão) adicionar a função de estender jQuery. Nome da função é adicionado com base no seu passe jQuery.widget() nome sem o namespace - "progresso". opção-pass ficha é obter o valor definido na instância do plugin. Como mostrado no exemplo a seguir, podemos especificar um valor padrão para qualquer opção. Ao projetar sua API, você deve estar ciente do uso mais comum do seu plug-in, para que possa definir o padrão adequado, e garantir que todas as opções verdadeiramente opcionais.

$.widget( "custom.progressbar", {
 
    // Default options.
    options: {
        value: 0
    },
    _create: function() {
        var progress = this.options.value + "%";
        this.element
            .addClass( "progressbar" )
            .text( progress );
    }
});

Chamar os métodos de plug-in

Agora podemos iniciar a nossa barra de progresso, vamos realizar uma ação, chamando o método na instância do plug-in. Para definir um método plug-in, nós só passamos jQuery.widget() referência a um objeto de função. Também pode definir o método "privado" para o nome da função com um prefixo sublinhado.

$.widget( "custom.progressbar", {
 
    options: {
        value: 0
    },
 
    _create: function() {
        var progress = this.options.value + "%";
        this.element
            .addClass( "progressbar" )
            .text( progress );
    },
 
    // Create a public method.
    value: function( value ) {
 
        // No value passed, act as a getter.
        if ( value === undefined ) {
            return this.options.value;
        }
 
        // Value passed, act as a setter.
        this.options.value = this._constrain( value );
        var progress = this.options.value + "%";
        this.element.text( progress );
    },
 
    // Create a private method.
    _constrain: function( value ) {
        if ( value > 100 ) {
            value = 100;
        }
        if ( value < 0 ) {
            value = 0;
        }
        return value;
    }
});

Para chamar um método em uma instância de plug-in, você pode passar o nome do método para o plugin jQuery. Se você chamar um método para aceitar parâmetros, você simplesmente passar o nome do método por trás desses parâmetros.

Nota: A função jQuery é passado para o mesmo nome de método utilizado para inicializar o plug-in para executar o método. Isso é feito para evitar a poluição namespace jQuery, mantendo as chamadas de método corrente. Nos capítulos seguintes, veremos outros usos olhar mais natural.

var bar = $( "<div></div>" )
    .appendTo( "body" )
    .progressbar({ value: 20 });
 
// Get the current value.
alert( bar.progressbar( "value" ) );
 
// Update the value.
bar.progressbar( "value", 50 );
 
// Get the current value again.
alert( bar.progressbar( "value" ) );

Use as opções

option() método é fornecida automaticamente para o plug-in. option() método permite-lhe obter e definir opções após a inicialização. O método do jQuery .css() e .attr() método: Você só pode passar um nome como o argumento é usar, você também pode passar um nome e um valor definido utilizando ou passar um par de chaves de nome / valor de hash para definir vários valores. Quando usado como um valor, um plug-in retorna o nome da opção de entrada de valor de corrente correspondente. Quando usado como um setter, widget _setOption método será chamado para cada opção é definida. Podemos especificar um plug-in no nosso _setOption método para refletir a alteração de opções. Alterar as opções de ação a ser executada de forma independente, podemos substituir _setOptions .

$.widget( "custom.progressbar", {
    options: {
        value: 0
    },
    _create: function() {
        this.options.value = this._constrain(this.options.value);
        this.element.addClass( "progressbar" );
        this.refresh();
    },
    _setOption: function( key, value ) {
        if ( key === "value" ) {
            value = this._constrain( value );
        }
        this._super( key, value );
    },
    _setOptions: function( options ) {
        this._super( options );
        this.refresh();
    },
    refresh: function() {
        var progress = this.options.value + "%";
        this.element.text( progress );
    },
    _constrain: function( value ) {
        if ( value > 100 ) {
            value = 100;
        }
        if ( value < 0 ) {
            value = 0;
        }
        return value;
    }
});

Adicionar callback

A extensão mais simples é adicionar um retorno de chamada para que os usuários possam reagir quando ocorrem mudanças no estado plug-in. Podemos olhar para exemplo de como adicionar uma chamada de retorno para a barra de progresso quando a barra de progresso atingir 100 por cento o seguinte. _trigger() método leva três argumentos: o nome do callback, um jQuery evento de retorno de chamada começou a objetos, e um hash dos dados associados ao evento. Nome de retorno de chamada é o único parâmetro obrigatório, mas deseja implementar costume caracteriza os usuários em plug-in, os outros parâmetros são muito úteis. Por exemplo, se nós criamos um plugin arrastável, nós podemos passar evento de arrastar mousemove quando acionado o retorno de chamada, o que permitirá que os usuários responder ao evento com base no objeto fornecido pelos X / Y coordenadas do arrasto. Por favor, note passado para _trigger() do evento original deve ser um evento jQuery em vez de um eventos navegador nativo.

$.widget( "custom.progressbar", {
    options: {
        value: 0
    },
    _create: function() {
        this.options.value = this._constrain(this.options.value);
        this.element.addClass( "progressbar" );
        this.refresh();
    },
    _setOption: function( key, value ) {
        if ( key === "value" ) {
            value = this._constrain( value );
        }
        this._super( key, value );
    },
    _setOptions: function( options ) {
        this._super( options );
        this.refresh();
    },
    refresh: function() {
        var progress = this.options.value + "%";
        this.element.text( progress );
        if ( this.options.value == 100 ) {
            this._trigger( "complete", null, { value: 100 } );
        }
    },
    _constrain: function( value ) {
        if ( value > 100 ) {
            value = 100;
        }
        if ( value < 0 ) {
            value = 0;
        }
        return value;
    }
});

função de retorno essencialmente apenas uma opção adicional, para que possa obter o mesmo que as outras opções e configurá-los. Sempre que retorno de chamada, haverá um evento correspondente é acionado. tipo de evento é pelo nome e o nome da função de retorno para determinar a ficha de ligação. Callback eo evento aceitam os mesmos dois argumentos: um objeto de evento e um hash dos dados associados ao evento, em especial, como mostrado nos exemplos a seguir. Você pode necessitar de incluir um plug-in recursos para impedir que os usuários, a fim de fazer isso, a melhor maneira é criar amor que você pode revogar retornos de chamada. Os usuários podem revogar callback ou um evento relacionado a um nativo revogar qualquer evento com eles, eles são chamando event.preventDefault() ou retornar false para conseguir. Se você revogar callback, _trigger() método irá retornar false , para que possa alcançar a função apropriada no plug-ins.

var bar = $( "<div></div>" )
    .appendTo( "body" )
    .progressbar({
        complete: function( event, data ) {
            alert( "Callbacks are great!" );
        }
    })
    .bind( "progressbarcomplete", function( event, data ) {
        alert( "Events bubble and support many handlers for extreme flexibility." );
        alert( "The progress bar value is " + data.value );
    });
 
bar.progressbar( "option", "value", 100 );

natureza

Agora vimos como usar a biblioteca de widget (Widget Factory) para criar um plug-in, vamos ver como ele realmente funciona. Quando você chamar jQuery.widget() , cria-se uma função de construtor para o plug-in e definir a sua instância do plugin é passado como um objeto de protótipo. Todas as funções são automaticamente adicionados ao widget vem de um widget base um protótipo, definida como jQuery.Widget.prototype . Quando você cria uma instância será usada em-plug jQuery.data armazena no elemento DOM original, plug-in nome como o nome da chave.

Uma vez que a instância do plugin diretamente ligada ao elemento DOM, você pode acessar diretamente o plug-in exemplo, sem a necessidade de percorrer os métodos de plug-in. Este método permitirá que você chamar diretamente na instância do plug-in, sem a necessidade de passar um nome de método de corda, e você também pode acessar as propriedades ligar diretamente.

var bar = $( "<div></div>" )
    .appendTo( "body" )
    .progressbar()
    .data( "progressbar" );
 
// Call a method directly on the plugin instance.
bar.option( "value", 50 );
 
// Access properties on the plugin instance.
alert( bar.options.value );

Você também pode criar uma instância do plug-in, sem métodos de passagem, e a opção de chamar os elementos do construtor diretamente:

var bar = $.custom.progressbar( {}, $( "<div></div>" ).appendTo( "body") );
 
// Same result as before.
alert( bar.options.value );

Extensão do protótipo

construtores widget e protótipos maior vantagem é extensões fáceis. Ao adicionar ou modificar o protótipo plugue método, podemos modificar o comportamento Widget de todas as instâncias. Por exemplo, se queremos adicionar um método para a barra de progresso para repor para 0% o progresso, podemos adicionar este método para o protótipo, que será chamado em todas as instâncias plug-in.

$.custom.progressbar.prototype.reset = function() {
    this._setOption( "value", 0 );
};

Para widgets estendidos para mais detalhes e como criar um novo widget em um já existente Widget mais detalhes, consulte o Widget estendida (Widget) por bibliotecas membros (do Widget Factory) .

aclarar

Em alguns casos, o aplicativo permite que o usuário plug-ins, e em seguida, cancelar o pedido. Você pode _destroy() para fazer este método. Em _destroy() dentro de um método, você deve revogar toda a ação durante a inicialização e pós-uso de plug-ins fazer. _destroy() por .destroy() método é chamado, .destroy() método é um plug-in casos em que a remoção de um elemento a partir dos vínculos DOM chamados automaticamente, assim que pode ser usado para coleta de lixo. Básico .destroy() método também é comumente usado para lidar com algumas operações de limpeza, tais como a remoção do elemento DOM a partir da instância do widget citados, namespace Widget unbind todos os eventos a partir dos elementos, usar unbind todos _bind() adicionar eventos.

$.widget( "custom.progressbar", {
    options: {
        value: 0
    },
    _create: function() {
        this.options.value = this._constrain(this.options.value);
        this.element.addClass( "progressbar" );
        this.refresh();
    },
    _setOption: function( key, value ) {
        if ( key === "value" ) {
            value = this._constrain( value );
        }
        this._super( key, value );
    },
    _setOptions: function( options ) {
        this._super( options );
        this.refresh();
    },
    refresh: function() {
        var progress = this.options.value + "%";
        this.element.text( progress );
        if ( this.options.value == 100 ) {
            this._trigger( "complete", null, { value: 100 } );
        }
    },
    _constrain: function( value ) {
        if ( value > 100 ) {
            value = 100;
        }
        if ( value < 0 ) {
            value = 0;
        }
        return value;
    },
    _destroy: function() {
        this.element
            .removeClass( "progressbar" )
            .text( "" );
    }
});

Fechar notas

Biblioteca de Componentes (Widget Factory) é uma maneira de criar um estado para o plug. Existem outros modelos diferentes podem ser utilizados, e cada um tem suas próprias vantagens e desvantagens. Biblioteca de Componentes (Widget Factory) resolve muitos problemas comuns, e melhora a eficiência, mas também aumentar consideravelmente a capacidade de reutilização do código, tornando-o adequado para jQuery UI e outro estado dos plug-ins.

Note-se que nesta seção, usamos o custom namespace. ui namespace é reservado plug-in oficial jQuery UI. Ao criar seus próprios plug-ins, você deve criar seu próprio namespace. Assim como a forma mais clara a partir de onde a ficha, que pertence à gama.

Como usar jQuery UI biblioteca de widgets
10/30