jquery每个选择器都不起作用

时间:2011-12-13 13:49:51

标签: javascript jquery selector

我创建了一个计数器,每个计数器都有不同的数字,但是当我在课堂上选择所有的元素时它不起作用......

$(document).ready(function() {


    function change() {
        /*
        $(".test").each(function(i,domeElement){

            var theNum = parseInt(this.html())+1;
            this.html(theNum);
        });
        */

        //this works... the other one doesnt why?!?!
        var theNum = parseInt($(".test").html()) + 1;
        $(".test").html(theNum);
    }

    setInterval(change, 1000);

});

http://jsfiddle.net/DTyY7/

6 个答案:

答案 0 :(得分:2)

你应该使用

$(this).html(theNum);

而不是

this.html(theNum);

因为html()是一个jQuery函数而this(在.each()内)是一个domElement,所以你必须把它包装成一个jQuery对象

在这里小提琴:http://jsfiddle.net/nicolapeluchetti/DTyY7/2/

答案 1 :(得分:1)

您的this回调正文中的

each()应更改为$(this)

$(".test").each(function(){
    var theNum = parseInt($(this).html())+1 || 0;
    $(this).html(theNum);
});

请参阅this演示。

答案 2 :(得分:0)

它正在将.test的第一个实例应用于所有这些实例。您需要循环遍历所有元素并单独应用+1

$('.test').each(function(){
           $(this).html(parseInt($(this).html())+1)
        });

答案 3 :(得分:0)

$(document).ready(function() {
    function change() {
        $(".test").each(function(i,domeElement) {
            var theNum = parseInt($(this).html())+1;
            $(this).html(theNum);
        });
    }
    setInterval(change,1000);
});

答案 4 :(得分:0)

你需要使用$(this)代替这个。我已经更新了代码http://jsfiddle.net/DTyY7/6/。希望它有帮助

答案 5 :(得分:0)

$(document).ready(function(){


function change(){

    $(".test").each(function(i, domElement){

        //var theNum = parseInt(this.html())+1;
        var num = parseInt($(".test").html());
        num++
        $(".test").html(num);
    });


    //this works... the other one doesnt why?!?!
      /* var theNum = parseInt($(".test").html())+1;
        $(".test").html(theNum);
*/}

setInterval(change,1000);

});

这是你如何解决它。因为你在另一个范围内这个keword不起作用。