在jquery中声明静态变量

在jquery中声明静态变量,jquery,variables,static,Jquery,Variables,Static,请指导我如何在下面的程序中声明静态变量。 我想通过单击按钮增加静态变量lists.counter的值。 但它不起作用 <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="finalspecific2_list._Default" %> <asp:

请指导我如何在下面的程序中声明静态变量。 我想通过单击按钮增加静态变量lists.counter的值。 但它不起作用

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


   <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
    <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>

</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">




<asp:Button ID="Login" runat="server" Text="Login" />
<asp:Button ID="Button1" runat="server" Text="Login" />





</ul>





</asp:Content>

$(文档).ready(函数列表(){
var list=$(“#myList li:gt(0)”;
list.hide();
lists.counter=0;
var username=$(“#”)val();
var pwd=$(“#”)val();
$(“#”)单击(函数(){
list.counter++;
警报(列表、计数器);
list.counter++;
});
$(“#”)单击(函数(){
{
警报(列表、计数器);
}
});
});

单击任何按钮时,lists.counter应增加,并且在后续单击时应增加。
请在这件事上给予指导

列表.计数器
替换为
此.计数器
并检查其是否工作

或者试试这个-

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

var counter = 0;

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

var计数器=0;
$(“#按钮”)。单击(函数(){
console.log(counter++);
});

演示:

在JQuery中声明变量时,请不要在中间使用点,而是可以使用驼峰格式来区分两个单词,因此
列表。计数器应为
列表计数器

更改代码:

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

    listsCounter = 0;

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

        listsCounter++;

    });

});
$(文档).ready(函数列表(){
ListSconter=0;
$(“#”)单击(函数(){
ListSconter++;
});
});

您可以在此处使用闭包:

$(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);
    });
});​
你可以在fiddle中找到代码

如果您感兴趣,可以阅读有关闭包的更多信息


更新:使用多个按钮共享同一计数器。

每次刷新时,计数器肯定不会递增。它应该按照您的方式工作:注意,您正在
列表
函数上创建一个属性,该属性对您所做的操作有效,但不是必需的。他所拥有的应该可以工作,这只是使它成为一个
var
,而不是函数的一个属性。亲爱的迪帕克斯,请为修改后的问题提出解决方案。$(document).ready(函数(){var count=1;$('#按钮')。单击(函数(){$('#计数器')。text(count++);});亲爱的萨米,谢谢你的帮助。但是我的代码有不同的要求。在使用相同变量的代码中有两个单击函数,如果按下任何按钮,该变量应增加。这就是变量的范围应该在两个函数中,而不限于任何一个函数。闭包的效果是,它捕获任意数量调用的计数器值。无论何时调用
计数器()
,无论调用方函数如何,都会得到一个增大的
计数器值。我会相应地更新提琴,这样你可以再看一眼:)亲爱的Subhajit,谢谢你的帮助,但在我们的代码中,两个函数共用一个变量,这个变量在两个函数中都应该增加,简而言之,有静态变量的要求,如果可能的话,请指导如何声明满足我们代码要求的静态变量。谢谢