$( "this" ).attr( "name" ) 通过未定义



这是我的HTML:

<form action="" id="onepagecheckout_orderform">
<input type="text" id="billing:firstname" name="billing[firstname]" value="" title="First Name" class="t1 required-entry"/>
<input type="text" id="billing:lastname" name="billing[lastname]" value="" title="Last Name" class="t1 required-entry"/>
<br/>
<input type="checkbox" class="" name="shipping[clone]" id="shippingClone" title="Clone"/>
<label for="shippingClone">Ship to same address</label>

和jQuery是:

$(document).ready(function () {
    function cloneMe() {
        $("#onepagecheckout_orderform input:text").each(function () {
            alert($('this').attr("name"));
        });
        return false;
    };
    $('#shippingClone').on('click', function () {
        cloneMe();
    });
});

jsfiddle链接是:here

当我点击复选框时,它应该显示所有输入类型的名称。但是它显示"undefined"

请帮帮我。

使用这个

alert($(this).attr("name"));

应该是:

alert($(this).attr("name"));

this不带单引号

最好的方法是直接使用节点属性名,这里根本不需要使用jquery:

alert(this.name);
$("#onepagecheckout_orderform input:text").each(function() {
                        console.log($(this));
                        alert($(this).attr('name'));
                    });

$函数可以接受许多不同的参数。如果你给它一个DOM对象(比如this),那么它将用jQuery对象包装它。

如果你传递给它一个字符串(看起来不像HTML),那么它将把它作为一个选择器,在DOM中搜索匹配的元素,并在它们周围包装一个jQuery对象。

你传递给它一个字符串,所以它会找到所有的<this>元素(没有任何,不能在HTML文档中)。

你想传递this,而不是'this'

最新更新