2012-03-09 59 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