0

如何将多个值存储到单个变量中并将它们检索到 setTimeout 函数中。

  $(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”结束时隐藏它们。

4

1 回答 1

0

您的代码在使用 jquery 选择器时存在一些错误。请使用#通过ID访问

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

也在 setTimeout

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

我对第二个 if 条件的右括号感到困惑。我关闭了那条线,它工作正常。如果你想检索“数据名称”来记录,你可以使用

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

对于单个或多个值。您也可以将 setTimeout 作为参数传递给它。

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

于 2013-11-11T13:14:00.217 回答