2012-02-16 66 views
1

我有一个无序的列表,它是动态创建的,我需要添加一个名为'selected'的类给一个特定的-li-。添加一个类到一个特定的li元素

-ul-是星期几的列表,需要选择的-li-是当天。不幸的是,我无法弄清楚如何将这个类添加到一个元素中,并且每当我尝试添加此类时,整个列表就会消失。这是我的代码:

var weekday = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat"); 
var today = day.getDay(); 
for(var x=0;x<=6;x++){ 
    $('ul').append(
     $('<li>') 
     .toggleClass(function(){ 
      if(today == x){ return 'selected'; } 
      else{ return ''; }; 
     }); 
     .append($('<a href = "#' + weekday[x].toLowerCase() + '">' + weekday[x] + '</a>'));  
    );  
$('li:last').addClass('last-child'); 

有人可以帮我弄清楚如何将这个类添加到当天的-li-吗?

回答

2

继从其他意见建议和修复一些错误固定代码:

var weekday = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'], 
    today = new Date().getDay(), 
    list = $('ul'); 

for(var x=0;x<=6;x++){ 
    list.append(
     $('<li></li>', { 
      html : '<a href = "#' + weekday[x].toLowerCase() + '">' + weekday[x] + '</a>' 
     }).toggleClass(function(){ 
      if(today == x){ 
       return 'selected'; 
      } 
     }).bind('click', function(e){ 
      e.preventDefault(); 
      $(this).parent().children('li').removeClass('selected'); 
      $(this).addClass('selected'); 
     }) 
    ); 
} 

$('li:last').addClass('last-child'); 
+0

这会在页面加载时将“selected”类添加到正确的li元素中,但当用户单击不同链接时它根本不会改变 – 2012-02-16 04:27:09

+0

我添加了单击事件处理程序来更改当用户点击链接时的类。 – michaeljdennis 2012-02-16 05:14:02

+0

这就是我在寻找我的问题,但是当我问我的问题时没有意识到这一点,所以也许你可以帮助我,如果不是,我仍然在努力自己......我是使用yahoo tabview,而这个无序列表是yui-nav(标签)。每个标签附带的内容区域都有类别“内容”。基本上,每个内容区域只应在相应的li被选中时显示。上面的答案有jQuery.map处理这个问题,但不会选择今天匹配的li。这段代码就是这样做的,但是所有的内容区域都会显示出来。有任何想法吗? – 2012-02-16 07:22:29

4
if(today = x) 
  • =分配
  • ==比较

做的另一种方式:

var weekday = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat"); 
var lis = []; 
var today = new Date().getDay(); 
jQuery.map(weekday, 
    function(day, ind){ 
     var cls = ind===today ? " class='selected'" : ""; 
     lis.push("<li><a" + cls +" href='#" + day.toLowerCase() + "'>"+ day + "</a></li>"); 
    } 
); 
$("ul").html(lis.join("")); 
+0

好吧,我添加了额外的=,但我的代码仍然不工作 – 2012-02-16 01:40:34

+0

感谢您的帮助!这给了我一个用户点击的链接的“选择”类,但我也需要它将选择的类添加到包含“今天”的li元素,而且它不会这样做,而且我甚至不会知道从哪里开始编辑所有这些 - 我将不得不查找1/2这个东西的参考,以了解最新的内容。再次感谢您的帮助! – 2012-02-16 02:43:25

1

是一天定义为新的日期?

var day = new Date();

或var today = new Date()。getDay();

+0

我今天有var = new Day.getDay();我添加了var day = new Date();但结果没有任何区别 – 2012-02-16 04:28:35

1

试一下:

var weekday = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat"); 
var d = new Date(); 
var today = d.getDay(); 

for(var x=0;x<=6;x++){  
    $('ul').append(   
     $('<li><a href = "#' + weekday[x].toLowerCase() + '">' + weekday[x] + '</a>') 
    );  

    $('li:last-child').addClass('last-child'); 

    if(x == today) 
    { 
     $('li:gt('+(x - 1)+')').toggleClass('selected'); 
    } 
} 
+0

这呈现与上面的答案相同的结果。对我来说,越来越明显的是,我的原始代码与任何会带来我期待的具体结果的东西都是牵强的 – 2012-02-16 04:31:38

相关问题