2015-08-03 2 views
0

У меня есть имя класса div "tw_marquee_scroller". Я хочу обновить его значение данных влево каждые 1 секунду. Например, в первой секунде значение будет 10, затем 20,30,40 ....... Я использую этот код, но он продолжает возвращать 10 снова и снова. Что случилось с этим?jQuery setInterval для постоянного обновления атрибута данных

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

    $('.tw_marquee_scroller').attr('data-left', 0); 

    setInterval(function(){ 
     var position = parseInt($('.tw_marquee_scroller').data('left')); 
     var new_position = position + 10; 
     $('.tw_marquee_scroller').attr('data-left', new_position); 
     console.log(new_position); 
    }, 1000); 

}); 
+0

Вы переопределение jquery, передав «$» в качестве параметра, $ не определено. –

+0

@ elad.chen Нет: ['.ready()'] (http://api.jquery.com/ready/) -> «Слияние пространства имен jQuery» – Andreas

+0

@Andreas Прочтите его быстро. –

ответ

2

Попробуйте также писать data атрибут с data(), а не attr():

$('.tw_marquee_scroller').data('left', 0); 

setInterval(function(){ 
    var position = parseInt($('.tw_marquee_scroller').data('left')); 
    var new_position = position + 10; 
    $('.tw_marquee_scroller').data('left', new_position); 
    console.log(new_position); 
}, 1000); 
+0

Да, сейчас работает! –

+0

@ user1936285 приятно! Старайтесь всегда управлять своими атрибутами данных. – DontVoteMeDown

0

почему вы не принимали значение таким же образом?

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

    $('.tw_marquee_scroller').attr('data-left', 0); 

    setInterval(function(){ 
     var position = parseInt($('.tw_marquee_scroller').attr('data-left')); 
     var new_position = position + 10; 
     $('.tw_marquee_scroller').attr('data-left', new_position); 
     console.log(new_position); 
    }, 1000); 

}); 
0

Изменение data('left') в том, что линия:

var position = parseInt($('.tw_marquee_scroller').attr('data-left')) 

И он будет работать

0

Вот менее оконного загрязняя-короче подход:

$((function($) { 
var scroller = $('.tw_marquee_scroller'); 

scroller.data('left', 0); 

setInterval(function() { 
    scroller.data('left', parseInt(scroller.data('left'), 10) + 10); 
    console.log(scroller.data("left")); 
}, 1000); 

}(jQuery.noConflict()))) 
Смежные вопросы