2012-03-09 61 views
1

我有下面的代码(即工作)来切换的iPhone风格的复选框:JQuery的复选框对象引用

  $('.iphone-style').live('click', function() { 

       checkboxID  = '#' + $(this).attr('rel'); 

       if($(checkboxID)[0].checked == false) { 
        $(this).animate({backgroundPosition: '0% 100%'}); 

        $(checkboxID)[0].checked = true; 
        $(this).removeClass('off').addClass('on'); 

       } else { 

        $(this).animate({backgroundPosition: '100% 0%'}); 

        $(checkboxID)[0].checked = false; 
        $(this).removeClass('on').addClass('off'); 

       } 
       }); 

在不同的功能,我想一个特定的复选框(AerialView)被选中时,另一个复选框(PhotoStyles)未被选中。我不知道如何正确地用更具体的东西替换'this'参考。我有以下(不工作):

   if($('#PhotoStylesCheck')[0].checked == false) { 

        $('#AerialViewCheck').animate({backgroundPosition: '100% 0%'}); 
        $('#AerialViewCheck')[0].checked = false; 
        $('#AerialViewCheck').removeClass('on').addClass('off'); 

       } 

注意,我证实,if语句作品的设置和检查,以假也适用。 'animate','removeClass'和'addClass'的视觉元素不起作用。

+0

你可以显示一些html代码或创建小提琴吗? – arunes 2012-03-09 06:27:52

回答

0

如果你有复选框的id,然后语法检查它是否被选中与否是:

if($('#' + id).is(":checked")) { 
    // it is checked 
} 
else { 
    // it is not checked 
} 

在你的情况,你没有使用正确的语法检查的复选框,你也有获得“真实”的价值。好。

现在,如果$('#AerialViewCheck')[0]是复选框元素,那么在其本身上应用animate,addClass,removeClass。你为什么试图申请$('#AerialViewCheck')?像这样使用:

$('#AerialViewCheck')[0].animate({backgroundPosition: '100% 0%'}); 
$('#AerialViewCheck')[0].removeClass('on').addClass('off'); 
+0

谢谢,但这并不奏效。我不知道我是否完全不用...但如果你看原始代码(工程)的动画,removeClass和addClass函数引用对象(与'this'调用)。他们没有引用该ID。当我不能调用'this'时,我不知道如何从ID中引用特定的对象(在这种情况下为AerialView)。 – 2012-03-09 19:00:23