2012-01-10 149 views
0

我試圖消除一些冗餘,但我似乎失去了一些東西這可能是顯而易見的......JQuery的現場綁定多個單選按鈕或單選按鈕列表

這行不通......

$('input[type="radio"][name="rdoQuestionAnswer"][name="rdoQuestionAnswerYes"][name="rdoQuestionAnswerNo"]').live({  
    click: function (e) { 
... 
      } 
     }); 

這樣做......

$('input[type="radio"][name="rdoQuestionAnswer"]').live({  
    click: function (e) { 
... 
      } 
     }); 

我不希望有創建這些每一個單選按鈕或單選按鈕列表中的一個...

評論,建議?

在此先感謝。

回答

1

改變你的選擇,使他們用逗號分隔:

$('input[type="radio"][name="rdoQuestionAnswer"], input[type="radio"][name="rdoQuestionAnswerYes"], input[type="radio"][name="rdoQuestionAnswerNo"]') 

在一個側面說明:你確定你必須指定type=radio

+0

沒有它不無工種= WhatEverTypeItIs (我嘗試過和沒有它,我使用的是最新版本的jQuery)除了這種方法工作...謝謝 – user1011144 2012-01-10 20:24:38

2

我將一個類(沒有附帶樣式)添加到每個那些單選按鈕,然後選擇來代替:

<input type="radio" class="selectme" name="rdoQuestionAnswer"/> 
<input type="radio" class="selectme" name="rdoQuestionAnswerYes"/> 
<input type="radio" class="selectme" name="rdoQuestionAnswerNo"/> 

的jQuery:

$('input.selectme').live('click', function() {...}); 
// or, to be modern about it: 
$(document).on('click', 'input.selectme', function() {...}); 
+0

這絕對是最好的方法。我會+1,但我已經達到了每日限制:) – 2012-01-10 19:59:10

+0

開始寫作,我喜歡live()方法的介紹,然後意識到爲什麼我從來沒有聽說過它,它已被棄用1.7 +。也就是說,「.on()」是一個完美的下降替代品,我可以排除在父元素中處理的選擇器,並且只保留事件類型和處理程序。愛它!謝謝。 – oucil 2013-03-03 17:55:27

+0

OP可能對他的HTML非常有意,但我想指出一件事:如果你處理的是互斥的單選按鈕/選項,它們應該都具有相同的'name'屬性,這否定了需要添加一個類。但是,當然..也許你有一種情況,你在處理各個組的單選按鈕,這個答案確實適用。 – bkwdesign 2013-10-21 16:33:48