2013-11-11 2 views
0

Как хранить несколько значений в одной переменной и извлекать их в функцию setTimeout.Как хранить несколько значений динамически добавленных элементов в один var и затем извлекать их в функцию

$(document).ready (function(){ 
    div ({'div':'#noo','auto':'true','pos':'top','txt':'hello'}); 
    div ({'div':'#bottom','auto':'true','pos':'bottom','txt':'hi'}); 
    setTimeout (function(){div ({'div':'#top','pos':'top','auto':'true','txt':'new'});}, 4000); 
    }); 

    function div(obj) { 
    obj.div; obj.auto; obj.pos; obj.txt; obj.time; 
    var rec = {}; 
    if(obj.pos == 'top') { $('<ul id="top"></ul>').appendTo('body'); } 
    if(obj.pos == 'bottom') { $('<ul id="bottom"></ul>').appendTo('body'); 
    $(obj.div).append('<li data-name="' + $.now() + '">' + obj.txt + '</li>'); 
    if(!obj.time) { obj.time = 6000; } 
    if(obj.auto == 'true') { 
     setTimeout(function() { 
       $(obj.div + ' li').fadeOut(); 
     }, obj.time); 
    } 
    } 

Теперь, как я могу сохранить «имя-данных» в «Rec» переменной и получить их в функцию SetTimeout для сокрытия их, когда «obj.time» закончилась.

ответ

0

Ваш код имеет некоторые ошибки при использовании селекторов jquery. пожалуйста, используйте # для доступа по ID

$("#"+obj.div).append('<li data-name="' + $.now() + '">' + obj.txt + '</li>'); 

также в SetTimeout

$("#"+obj.div + ' li').fadeOut(); 

Я запутался в закрывающей скобки второго, если условия. Я закрылся в этой линии и работал нормально. если вы хотите получить «имя-имя» в rec, вы можете использовать

$("#"+obj.div + ' li').each(function(i) { 
    $(this).attr('data-name'); 
}); 

для одного или нескольких значений. также вы можете перейти к setTimeout в качестве параметра.

http://arguments.callee.info/2008/11/10/passing-arguments-to-settimeout-and-setinterval/

Смежные вопросы