我有一些像这样的复选框输入:
<input type="checkbox" name="1" class="filter"/>
<input type="checkbox" name="2" class="filter"/>
...etc...
我正在尝试编写一个函数,只要选中一个复选框,它就会生成一个包含所有连接名称的字符串。这是我到目前为止所做的:
$('.filter').click(function(event){
var filters = $('.filter').toArray();
var fstr = "";
for (f in filters)
{
fstr = fstr+","+f.name;
}
alert(fstr);
});
但名称仍然以“未定义”的形式出现(即警报返回,undefined,undefined,undefined,undefined,undefined,undefined
)。如何访问名称?
答案 0 :(得分:4)
以下是它的意图:
$('.filter').click(function (event)
{
var fstr = '';
$('.filter[name]').each(function ()
{
fstr += ',' + $(this).attr('name');
});
alert(fstr);
});
答案 1 :(得分:1)
您可以使用.map()
来获取您所追求的内容,例如:
$('.filter').click(function(event){
var names = $('.filter').map(function () {
return $(this).attr("name");
}).get().join(',');
alert(names);
});
如果您想要一个仅包含已选中的列表,请将$('.filter')
更改为$('.filter:checked')
。
答案 2 :(得分:1)
$('.filter').click(function(event){
var filters = $('.filter').toArray();
var fstr = "";
for (f in filters)
{
fstr = fstr+","+filters[f].name;
}
alert(fstr);
});
为什么你这样做呢?
$('.filter').click(function(event){
var str = '';
$('.filter').each(function () {
str += $(this).attr('name') +",";
});
alert(str);
});
答案 3 :(得分:1)
(function($filters) {
$filters.click(function(event) {
var filters = $filters.toArray();
var fstr = [];
for (var i = filters.length - 1; i > -1; --i) {
fstr.push(filters[i].name);
}
fstr = fstr.join(",");
alert(fstr);
}
})($('.filter'));
答案 4 :(得分:0)
尝试$(f).name
。
答案 5 :(得分:0)
$(elem).attr("name")
怎么样?
答案 6 :(得分:0)
我认为转换为数组是你的问题,请尝试:
var filters = $('.filter');
for(var nI = 0; nI < filters.length; nI++)
filters.eq(nI).attr('name');