获取JS / jQuery中的元素名称

时间:2010-05-18 17:43:14

标签: javascript jquery namespaces

我有一些像这样的复选框输入:

<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)。如何访问名称?

7 个答案:

答案 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');