2011-03-29 84 views
0

好吧,我想鏈將這些語句之一,但我不知道它是如何工作還..如何將這兩個jquery語句鏈接成一個?

我有很多輸入在我的HTML文件,然後如果我點擊一個鏈接,它只會檢查鏈接並進行其他輸入複選框取消選中。這裏是我當前的代碼爲:

$('.category').click(function() { 
    $('input[name=category]').attr('checked', false); 
    $(this).parent().find('input').attr('checked', true); 
} 

我認爲這可能是緩慢的,因爲第二條語句會去它的父,然後找到然後輸入檢查它。 。將它們合併爲一個並使其更快可能是可能的?

+1

對於相互排斥的選項,當然最好是用單選按鈕代替?關於你目前的陳述,他們看起來很好。它有多慢?秒?分鐘?小時? – mdm 2011-03-29 08:49:20

+0

我需要它是一個複選框,因爲有時可以選擇2個選項 – 2011-03-29 08:51:34

+0

不知道DOM上下文有點難以給你最好的解決方案。 .category放在哪裏?在輸入前的div中?在一個複雜的架構? – 2011-03-29 09:14:00

回答

3

眼看調用.parent().find()你的品牌連鎖我覺得你實際上是在尋找一個兄弟姐妹?您可以通過使用.siblings()功能獲得更好的里程數。

考慮到這一點,你可能要句話你這樣的代碼:

$('.category').click(function(){ 
    $('[name="category"]').attr('checked',true); 
    $(this).siblings('input:checkbox').attr('checked',true); 
}); 

這是很難構建您的特定DOM正確的鏈條,無需先看到代碼,但上面的代碼應該OK 。看起來不重。

+0

感謝兄弟姐妹的功能 – 2011-03-29 09:25:25

-1

製作認定只有一次......

var $category = $('input[name=category]'); 
var $inputs = $('your_parent_selector'); 
$('.category').click(function() { 
    $category.attr('checked', false); 
    $inputs.attr('checked', true); 
} 
+0

謝謝..但它可以只在一個鏈中創建? – 2011-03-29 08:52:42

+0

'this'在'$(this).parent()。'中引用的內容find('input');'?它必須位於click事件中。類別選擇器可以在點擊事件之外完成,儘管您已經這樣做了,但它不會運行多次。 – 2011-03-29 08:53:08

+0

@InfernalBadger:你說得對,我很快就複製了,我的意思是,並且明白,父母選擇器只是一事無成。如果不是,必須返回到點擊功能。對不起 – neurino 2011-03-29 08:57:42

2

您可以添加額外的過濾到您的.find()僅查找複選框

$(this).parent().find('input[type="checkbox"]').attr('checked', true);