2011-03-29 99 views
0

有一個問題在這裏,我需要手動檢查/取消選中一個複選框。使用 這個代碼不工作Jquery複選框檢查/取消選中所有工作正常 - 檢查/取消選中一個不是

$('input:checkbox').live('click', function(event) { 
    event.preventDefault(); 
    if($(this).attr('checked') == false) { 
    $(this).attr('checked', true); 
    } else { 
    $(this).attr('checked', false); 
    } 
    return false; 
}); 

但使用幾乎相同的檢查/取消選中所有複選框做工精細...

$(".todos").live('click', function(event) { 
event.preventDefault(); 
$.each($('input[type="checkbox"]'), function(i) { 
    if($(this).hasClass('in_'+que_caixa)) { 
     if($(this).attr('checked') == false) { 
      $(this).attr('checked', true); 
     } else { 
      $(this).attr('checked', false); 
     }    } 
}); 

});

我該怎麼辦?

感謝

+0

你爲什麼這樣做?瀏覽器已經這樣做了。 – SLaks 2011-03-29 15:20:08

+0

'event.preventDefault()'是關鍵。如果添加該行,您的第一個代碼片段應該可以工作(但@ ssaks正確:複選框控件已經實現了您正在查找的行爲)。 – 2011-03-29 15:20:59

回答

1

您需要返回false,因爲你做你的檢查後,它仍然繼續通過事件

$('input[type="checkbox"]').live('click', function(event) { 
    if($(this).attr('checked') == false) { 
    $(this).attr('checked',"checked"); 
    } else { 
    $(this).attr('checked', false); 
    } 
    return false; 
}); 

和喜歡的評論上面的瀏覽器已經這樣做了,爲什麼你一定要綁定它?

,並在另一方面,可以真正地做到這一點作爲一個選擇:

$("input:checkbox") 
+0

無效:-( – Pluda 2011-03-29 15:41:35

+0

我需要這個,因爲我在手風琴裏創建了複選框。當我點擊複選框時,手風琴打開,但複選框沒有被選中... – Pluda 2011-03-29 15:43:06

+0

這是一個移動應用程序,我沒有在線顯示,對不起。將代碼更改爲'code'$('input:checkbox')。live('click',function(event){ \t event.preventDefault(); \t如果($(本).attr( '檢查')== FALSE){ \t \t $(本).attr( '檢查',真); \t}其他{ \t \t $(本).attr ('checked',false); \t} \t返回false; });'code' – Pluda 2011-03-29 15:44:26

0

瀏覽器已經切換的複選框爲您服務。
您的代碼第二次切換,所以沒有任何反應。

相關問題