繁体   English   中英

jQuery函数不适用于两个元素

[英]jQuery Function don't work with two elements

我的jQuery脚本没有按升序返回数字。

jQuery的

$(document).ready(function() {
  $.xpto = function(dom, speed) {
    i = 0;
    interval = setInterval(function() {
      i++;
      $(dom).append(i + '<br>');
    }, speed);
  };

  $.xpto('#a', 1000);
  $.xpto('#b', 2000);
});

而我的HTML:

<div id="a" style="background:blue;float:left;"></div>
<div id="b" style="background:red;float:left;"></div>

谢谢!

i = 0interval之前,您缺少var关键字。 这会使函数$.xpto所有实例共享这些变量。 此外,每次调用$.xpto时, i变量都会重置为零。

根据您函数的逻辑,这应该发生:

a 1
b 2
a 3
a 4
a 5
b 6
a 7
a 8
b 9
...

如果这与预期不符,请提及您的意愿,我将进行介绍。

试试这个: -http : //jsfiddle.net/FloydPink/hWYG5/

$(document).ready(function() {
    $.xpto = function(dom, speed) {
        var i = 0;
        interval = setInterval(function() {
            i++;
            $(dom).append(i + '<br>');
        }, speed);
    };

    $.xpto('#a', 1000);
    $.xpto('#b', 2000);
});

如果没有var关键字,变量i不会在闭包中显式声明,而是在$.xpto两次调用中都被重用

如果要为每一行分配自己的计数变量,则必须在定义i之前使用var关键字。

http://jsfiddle.net/pF2ef/2/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM