代码之家  ›  专栏  ›  技术社区  ›  Mala

获取js/jquery中元素的名称

  •  0
  • Mala  · 技术社区  · 14 年前

    我有一些复选框输入,比如:

    <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 回复  |  直到 14 年前
        1
  •  4
  •   Matt Ball    14 年前

    这就是要做的事情:

    $('.filter').click(function (event)
    {
        var fstr = '';
        $('.filter[name]').each(function ()
        {
            fstr += ',' + $(this).attr('name');
        });
        alert(fstr);
    });
    
        2
  •  1
  •   Nick Craver    14 年前

    你可以使用 .map() 要得到你想要的,像这样:

    $('.filter').click(function(event){
      var names = $('.filter').map(function () { 
        return $(this).attr("name"); 
      }).get().join(',');
      alert(names);
    });
    

    只是改变 $('.filter') $('.filter:checked') 如果你想要一个只包含选中的列表。

        3
  •  1
  •   Matt user129975    14 年前
    $('.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);
    });
    
        4
  •  1
  •   Pablo Cabrera    14 年前
    (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'));
    
        5
  •  0
  •   Millions    14 年前

    尝试 $(f).name .

        6
  •  0
  •   Jeriko    14 年前

    怎么样 $(elem).attr("name") ?

        7
  •  0
  •   aepheus    14 年前

    我认为转换为数组是您的问题,请尝试:

    var filters = $('.filter');
    for(var nI = 0; nI < filters.length; nI++)
    filters.eq(nI).attr('name');