2011-07-01 34 views
0

在我的jquery中,我有以下代码,由于某些原因,我的预期工作不正常。在测试时,代码不会执行css更改。如果我删除了:选中,只是有$(“输入”),那么CSS的作品,但只在输入点击:复选框在jquery中输入:checked&toggle()

$("input :checked").toggle(function() { 
    // Stuff to do every *odd* time the element is clicked; 
    $(this).siblings('a').css("text-decoration","line-through"); 
    $(this).siblings('a').css("color","#aaa"); 
    $(this).parent('li').css("background-color","#ccc"); 
}, function() { 
    // Stuff to do every *even* time the element is clicked; 
    $(this).siblings('a').css("text-decoration","none"); 
    $(this).siblings('a').css("color",""); 
    $(this).parent('li').css("background-color",""); 
}); 

我缺少什么?

+0

你到底想干什么?你可以发布你的标记吗? – Mrchief

+0

一个简单的待办事项样式应用 – ChrisMJ

+0

'

' – ChrisMJ

回答

3

试试这个:

$('input:checkbox').click(function() { 
    if($(this).is(':checked')) { 
     // Stuff to do every *odd* time the element is clicked; 
     $(this).siblings('a').css("text-decoration","line-through"); 
     $(this).siblings('a').css("color","#aaa"); 
     $(this).parent('li').css("background-color","#ccc"); 
    } 
    else { 
     // Stuff to do every *even* time the element is clicked; 
     $(this).siblings('a').css("text-decoration","none"); 
     $(this).siblings('a').css("color",""); 
     $(this).parent('li').css("background-color",""); 
    } 
}); 

下面是这个的jsfiddle:http://jsfiddle.net/AwMf3/

+0

谢谢,这工作的魅力! – ChrisMJ

+0

它确实有效,但有点过分。使用@Karolis的建议,将原始代码从'$(“input:checked”)'改为'$(“input:checkbox”)'也可以,不需要if语句 –

+0

@Mully :愿意看到一个少用代码的jsfiddle! – Mrchief

0

输入元素不能有后代。也许你的意思是input:checked(没有空间)?

+0

我试过了。不知道发生了什么 – ChrisMJ