2011-06-27 76 views
0

我想將單選按鈕的屬性分配給複選框,例如,如果我更改單選按鈕的值,則應該對複選框產生相同的影響。下面是代碼我有什麼如何將單選按鈕的屬性分配給複選框

$(this).children('TD').find('input:radio').change(function() 
     { 
      $(this).parents('TD').find('input:checkbox').prop(?) 
     }); 

高興有人能幫助我

回答

1

只需使用propthis

$(this).children('TD').find('input:radio').change(function() 
     { 
      $(this).parents('TD').find('input:checkbox').prop('checked',this.checked) 
     }); 

注意它當您選擇關閉單選按鈕時不會取消選中該框,因爲它不會調用舊按鈕上的change事件。

+0

*「只需使用'this'的'prop'值:」*僅限於jQuery 1.6.0或更高版本。在1.5.x和更早版本中,它是'attr'。而'$(this).prop('checked')'是編寫'this.checked'的一種非常冗長的方式。 ;-) –

+0

@ T.J。 Crowder當他在他的問題中使用'prop'時,我會假定他正在使用實際上支持它的jQuery版本。至於直接使用'node.checked',是的,它肯定會更快,但是你可能想要確保元素確實存在,否則當修改DOM元素時可能會或可能會出現錯誤不存在。如果你願意像他一樣在一個問題中遍歷DOM,同時確保他使用的元素實際存在,那麼爲什麼不呢。編輯,對不起遺漏了你的答案的一半,只適用於你的答案的第一位。 – Niklas

1

如果你從字面上的意思是,如value屬性,那麼您可以分配給該元素自身的value財產或使用jQuery通過val()做到這一點。

但我相信你實際上指的是選中狀態,而不是價值,在這種情況下,您可以直接分配給該元素的checked財產,或使用attr()

例子:

如果您知道的複選框會在那裏,只是直接將其checked屬性:

$(this).children('TD').find('input:radio').change(function() 
    { 
     $(this).parents('TD').find('input:checkbox')[0]. checked = this.checked; 
     //        note this ---^^^ We're looking at the raw element 
    }); 

或者,如果你喜歡做「jQuery的」方式或有任何可能性複選框不會在那裏,就像這樣:

$(this).children('TD').find('input:radio').change(function() 
    { 
     $(this).parents('TD').find('input:checkbox').attr("checked", this.checked); 
    }); 

使用attr設置checked狀態在jQuery 1.5.x和更高版本以及jQuery 1.6.1和更高版本中工作;在1.6.1或更高版本中,您可以使用prop。大約兩週(jQuery 1.6.0),你會有使用新的prop功能,但他們重新考慮這一點。 :-)