jquery каждый селектор не работает - PullRequest
1 голос
/ 13 декабря 2011

Я создал счетчик, который подсчитывает разные числа каждый, но когда я выбираю все элементы в классе, он не работает ...

$(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 ]

2 голосов
/ 13 декабря 2011

Вы должны использовать

$(this).html(theNum);

, а не

this.html(theNum);

Поскольку html() является функцией jQuery, а this (внутри .each()) является элементом domElement, и выдолжен обернуть его в объект jQuery

Fiddle здесь: http://jsfiddle.net/nicolapeluchetti/DTyY7/2/

1 голос
/ 13 декабря 2011

this в вашем each() теле обратного вызова должно быть изменено на $(this):

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

см. это демо.

0 голосов
/ 13 декабря 2011
$(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);

});

Вот как это можно исправить. Поскольку вы находитесь в другой области, кьюорд это не работает.

0 голосов
/ 13 декабря 2011

вам нужно использовать $ (это) вместо этого. Я обновил код http://jsfiddle.net/DTyY7/6/. Надеюсь, это поможет

0 голосов
/ 13 декабря 2011
$(document).ready(function() {
    function change() {
        $(".test").each(function(i,domeElement) {
            var theNum = parseInt($(this).html())+1;
            $(this).html(theNum);
        });
    }
    setInterval(change,1000);
});
0 голосов
/ 13 декабря 2011

применяет первый экземпляр .test ко всем из них.Вам нужно перебрать все элементы и применить +1 отдельно.

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