Javascript jQuery从动态标记获取属性

Javascript jQuery从动态标记获取属性,javascript,jquery,html,Javascript,Jquery,Html,我有这个html <div class="form-new"><input name="a1" /></div> <div class="form-new"><input name="a2" /></div> <div class="form-new"><input name="a4" /></div> <div class="form-new"><input name=

我有这个html

<div class="form-new"><input name="a1" /></div>
<div class="form-new"><input name="a2" /></div>
<div class="form-new"><input name="a4" /></div>
<div class="form-new"><input name="a3" /></div>

...

...

它是动态的,所以我想使用jquery在输入名称的末尾获得最大的数字(在本例中,它将是a4),请告诉我如何做到这一点,很抱歉我的英语不好这里有一个可能的解决方案:

var maxVal = -1;        // set to the minimum possible value
var maxInput;
$('.form-new input').each(function (i, e) {
    var val = parseInt($(e).attr('name').match(/\d+$/)[0]);    // gets the number at the end of "name" attribute value
    if (val > maxVal) {
        maxVal = val;
        maxInput = $(e);
    }
});

// maxInput holds the jQuery object of the input with max value at the end of "name" attribute
对div中的值进行排序并显示最后一个值

var-inputList=$('input').sort(函数(a,b){
var contentA=$(a).attr('name');
var contentB=$(b).attr('name');
返回(contentA>contentB);
})
var totalInputItems=inputList.length;
警报($(inputList[totalInputItems-1]).attr('name'))

以下是一个可能的解决方案:

对div中的值进行排序并显示最后一个值

var-inputList=$('input').sort(函数(a,b){
var contentA=$(a).attr('name');
var contentB=$(b).attr('name');
返回(contentA>contentB);
})
var totalInputItems=inputList.length;
警报($(inputList[totalInputItems-1]).attr('name'))

您可以按如下方式编写:

var ip=$('.form-new input');
var numbers=[];
var maxNum=0;
$.each(ip,function(index,value){
    numbers.push([value["name"].split("a")[1],value]); //storing along with control so that you can refer in in future if you want
});

$.each(numbers,function(index,value){
     if(value[0]>parseInt(maxNum))
     {
          maxNum=value[0];
     }
});
alert("a"+maxNum);

你可以把它写下来如下:

var ip=$('.form-new input');
var numbers=[];
var maxNum=0;
$.each(ip,function(index,value){
    numbers.push([value["name"].split("a")[1],value]); //storing along with control so that you can refer in in future if you want
});

$.each(numbers,function(index,value){
     if(value[0]>parseInt(maxNum))
     {
          maxNum=value[0];
     }
});
alert("a"+maxNum);
香草JS

var largest = [].slice.call(document.querySelectorAll('.form-new')).reduce(function (acc, el) {
    var name = el.querySelector('input').getAttribute('name');
    return int(name) > int(acc) ? name : acc;
});

function int(s) { return parseInt(~~(s+'').replace(/.*[^\d](\d+)$/g,'$1')); }

香草JS

var ip=$('.form-new input');
var numbers=[];
var maxNum=0;
$.each(ip,function(index,value){
    numbers.push([value["name"].split("a")[1],value]); //storing along with control so that you can refer in in future if you want
});

$.each(numbers,function(index,value){
     if(value[0]>parseInt(maxNum))
     {
          maxNum=value[0];
     }
});
alert("a"+maxNum);
var largest = [].slice.call(document.querySelectorAll('.form-new')).reduce(function (acc, el) {
    var name = el.querySelector('input').getAttribute('name');
    return int(name) > int(acc) ? name : acc;
});

function int(s) { return parseInt(~~(s+'').replace(/.*[^\d](\d+)$/g,'$1')); }

$('.form new input').last().attr('name')
您能定义一下“最高”是什么意思吗?那是表格上最上面的吗?或者名称末尾有最大数字的那一个?是的,它是名称末尾的最大数字您也可以使用$('.form new:last input').attr('name')谢谢大家,但如果在此之前我希望名称末尾有最大数字,而不是最后一个输入,请帮助我
$('.form new input').last().attr('name')
您能定义一下“最高”是什么意思吗?那是表格上最上面的吗?或者名称末尾有最大数字的那一个?是的,它是名称末尾的最大数字您也可以使用$('.form new:last input')。attr('name')谢谢大家,但如果在此之前我希望名称末尾有最大数字,而不是最后的输入,请帮我一个小提示:OP希望在名称的末尾有
最大的数字,但您的代码会删除所有非数字并使用剩余的数字。因此,如果
name=“a1b23”
您的代码将计算它为123,而它应该是23,为什么不只是
str.match(/\d+$/)
。。这仍然只是一个小提示:OP希望在名称的末尾有
最大的数字,但您的代码会删除所有非数字并使用剩余的数字。因此,如果
name=“a1b23”
您的代码将计算它为123,而它应该是23,为什么不只是
str.match(/\d+$/)
。。还是香草味的JS@Moogs我知道。这取决于OP添加所需的验证,因为我只处理他在问题中提到的案例。如果没有数字,我甚至不知道该怎么办。如果根本没有name属性呢?这也会出错,但我该怎么办?。。这取决于行动。无论如何谢谢:)@Moogs我知道。这取决于OP添加所需的验证,因为我只处理他在问题中提到的案例。如果没有数字,我甚至不知道该怎么办。如果根本没有name属性呢?这也会出错,但我该怎么办?。。这取决于操作。无论如何,谢谢:)
var ip=$('.form-new input');
var numbers=[];
var maxNum=0;
$.each(ip,function(index,value){
    numbers.push([value["name"].split("a")[1],value]); //storing along with control so that you can refer in in future if you want
});

$.each(numbers,function(index,value){
     if(value[0]>parseInt(maxNum))
     {
          maxNum=value[0];
     }
});
alert("a"+maxNum);