Declarando variável estática no jquery

Por favor, guie-me sobre a declaração de variáveis ​​estáticas no programa a seguir. Eu quero incrementar o valor da variável estática lists.counter com o clique do botão. Mas não está funcionando.

 <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="finalspecific2_list._Default" %>


   
    <script src="Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
    <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>

<script type="text/javascript">

    $(document).ready(function lists() {

        var list = $('#myList li:gt(0)');


        list.hide();
        lists.counter = 0;
        var username = $("#<%= uname.ClientID %>").val();
        var pwd = $("#<%= pwd.ClientID %>").val();


        $("#<%= Login.ClientID %>").click(function() {


            lists.counter++;


            alert(lists.counter);
            lists.counter++;


        });




        $("#<%= Button1.ClientID %>").click(function() {

            {

                    alert(lists.counter);



                    }




                });
    });



  </script>





















lists.counter deve aumentar quando qualquer botão for clicado e deve ser incrementado para os cliques subsequentes. Por favor, guie neste assunto.

1
adicionado editado
Visualizações: 1
Deve funcionar do jeito que você tem: jsbin.com/ebesad Observe que você está criando uma propriedade no A função lista </​​code>, que é válida, mas não é necessária para o que você está fazendo.
adicionado o autor T.J. Crowder, fonte
Em cada atualização, o contador não será incrementado com certeza.
adicionado o autor Umesh Patil, fonte

3 Respostas

Você pode usar um fechamento aqui:

$(document).ready(function() {
   //The actual counter is contained in the counter closure.
   //You can create new independent counters by simply assigning 
   //the function to a new variable
    function makeCounter() {
        var count = 0;
        return function() {
            count++;
            return count;
        };
    };

   //This variable contains a counter instance
   //The counter is shared among all calls regardless of the caller
    var counter = makeCounter();

   //The handler is bound to multiple buttons separated by commas
    $("#button, #another_button, #yet_another_button").click(function() {
       var i = counter();
       console.log("The counter now is at " + i);

      //Probably update your counter element
      //$("#counter").text(i);
    });
});​

Você pode encontrar o código em este violino.

Se estiver interessado, você pode ler mais sobre fechamentos aqui .

Update: This fiddle uses multiple buttons sharing the same counter.

5
adicionado
Caro Sammy, obrigado pela sua ajuda. Mas meu código tem requisitos diferentes. Existem duas funções click no código usando a mesma variável e esta variável deve aumentar se algum botão for pressionado. Esse é o escopo da variável deve estar em ambas as funções e não se limitar a qualquer função.
adicionado o autor user1458312, fonte
Na verdade, minha abordagem é perfeita para as suas necessidades :). O efeito do encerramento é que ele captura o valor do contador sobre qualquer quantidade de invocações. Toda vez que você chama counter() , você obtém um valor maior counter , independentemente da função do chamador. Vou atualizar o violino de acordo para que você possa ter outra aparência :)
adicionado o autor Sammy S., fonte

Substitua lists.Counter com this.Counter e verifique se funciona

ou tente isso -

<input id="button" type="button" value="button" />

var counter = 0;

$("#button").click(function() {
   console.log(counter++);
});

Demo: http://jsfiddle.net/AxD7c/

0
adicionado
O que ele deve funcionar, isso apenas torna um var em vez de uma propriedade da função.
adicionado o autor T.J. Crowder, fonte
Caro Dipaks, Por favor, sugira a solução para a questão modificada.
adicionado o autor user1458312, fonte
$ (document) .ready (function() {var count = 1; $ ('botão #'). click (function() {$ ('# contador'). texto (conta ++);});});
adicionado o autor ShivarajRH, fonte

While declaring variables in JQuery, please don't use DOT in between, instead you can use camel format to differentiate two words, so list.counter should be listCounter

Código alterado:

$(document).ready(function lists() {

    listsCounter = 0;

    $("#<%= Login.ClientID %>").click(function() {

        listsCounter++;

    });

});
0
adicionado
Caro Subhajit, obrigado pela vossa ajuda, mas no nosso código existe uma variável comum a duas funções e esta variável deve aumentar em ambas as funções, em suma há exigência de variável estática se possível gentilmente guia quanto à declaração de variável estática que satisfaça a exigência do nosso código. Obrigado!!!!!
adicionado o autor user1458312, fonte