假设我有两个名为radio-1
和radio-2
的无线电输入,我将他们的输入存储在一个对象中,我最终将其用作json来发布请求。
vals = {}
$('input:radio[name=radio-1]').click(function() {
vals['radio-1'] = $('input:radio[name=radio-1]:checked').val();
});
$('input:radio[name=radio-2]').click(function() {
vals['radio-2'] = $('input:radio[name=radio-2]:checked').val();
});
例如:val = {'radio-1':1,'radio-2':3}
现在,我说有多个无线电输入,radio-3
,radio-355
。等...我希望能够将radio-[0-9]+
的所有值都放入我的val
字典中,而不必为每个字典编写如上所示的代码。
我想到的伪代码是:
radio-[0-9]+
的所有已点击的广播vals
字典中
醇>
答案 0 :(得分:4)
使用jQuery attribute starts with selector
为名称以radio
开头的所有无线电元素编写click事件。试试这个:
$('input:radio[name^=radio]').click(function() {
vals[$(this).attr("name")] = $(this).val();
});
答案 1 :(得分:1)
这样的事情应该这样做
// base object
var myObj = {};
// all radio inputs with a name attribute that starts with radio-
$('input[type="radio"][name*="radio-"]').click(function() {
// cache your jquery wrapped `this`
var $this = $(this);
// push the radio inputs value onto object with $this' name attribute as the key
myObj[$this.attr('name')] = $this.val();
});
答案 2 :(得分:0)
http://jsfiddle.net/OxyDesign/z6jm8v83/
JS
var vals = {},
radios = $('input[name^=radio]'),
radiosLgth = radios.length;
radios.click(function() {
vals = {};
for(var i = 0; i < radiosLgth; i++){
var radioElt = radios.eq(i),
isChecked = radioElt.is(':checked');
if(isChecked) vals[radioElt.attr('name')] = radioElt.val();
}
});
每次点击它都会创建一个新对象,并检查每个无线电的所有名称/值。