attr(' id')返回空字符串

时间:2014-08-29 10:38:48

标签: jquery

我正在尝试遍历所有表单元素。这是我的代码:

$.each($(this).serializeArray(), function(fsai,fsae) {             
    alert($(fsae).attr('name'));
});

效果很好;我得到所有字段名称的所有警报。但我需要获得身份证。所以我这样做:

$.each($(this).serializeArray(), function(fsai,fsae) {             
    alert($(fsae).attr('id'));
});

这个永远不会奏效。我得到的只是空警。为什么呢?

PS:所有元素都有有效的name和id属性,并带有有效值。

这是标记:

<form>
    <input id="e90" type="text" placeholder="Name" name="name" value="">
    <textarea placeholder="Comments" id="e91" name="comments" type="" value=""></textarea>
    <input type="submit" id="e92" name="submit" value="Submit">
</form>

5 个答案:

答案 0 :(得分:1)

jQuery serializeArray 将返回名称和值对,因此您无法访问ID。检查Manual

答案 1 :(得分:0)

尝试使用".prop()"代替".attr()"

问候

答案 2 :(得分:0)

如果元素存在Id属性,则可以直接访问id属性,如

$.each($(this).serializeArray(), function(fsai,fsae) {             
    alert($(fsae).id);
});

答案 3 :(得分:0)

试试这个:

var tes = $('form');

var children = tes.children();

   $(children).each(function () 
   {
       var TAG = $(this).get(0).tagName;

       if(TAG != "DIV" && TAG != "SPAN")
       {
           alert($(this).attr("id"));
           alert($(this).attr("name"));
           //u can push each element atrribute like name or id here to an array.
       }
   });

请注意,这只是解决方法,但它正在运行,这是工作示例HERE

就像@REX说的那样,如果你的表单有一个ID,那么你的文件可能会同时包含多个表格。

答案 4 :(得分:0)

正如@Sadikhasan所说,jQuery serializeArray将返回名称和值对,因此您无法访问id。

所以你试试这个

//Get all input elements in form
$("form :input").each(function () {
    alert($(this).attr("id"));
});

//It will be better if form has some id or class

Demo Fiddle