【问题标题】:How to access element by index name by Jquery?如何通过 Jquery 通过索引名称访问元素?
【发布时间】:2010-01-19 10:58:00
【问题描述】:

我有几个 INPUT:

<input type="text" name="entry[1]" value="aaa" id="firstEntry" />
<input type="text" name="entry[2]" value="bbb" id="secondEntry" />
<input type="text" name="entry[3]" value="ccc" id="thirdEntry" />

当我知道元素 id 是“secondEntry”时如何得到“2”?

var name = $("#secondEntry").attr('name'); // name = "entry[2]"

但是如何获得索引 2 ? 我只需要知道索引 (2),而不是全名(条目 [2])。

【问题讨论】:

    标签: javascript jquery forms


    【解决方案1】:

    好吧,名字只是一个字符串,剩下的你必须通过字符串操作来完成:

    var name = $("#secondEntry").attr('name'); // name = "entry[2]"
    name = name.substring(name.indexOf('[')+1); // name = "2]"
    
    // if you want an integer
    name = parseInt(name, 10); // name = 2
    
    // if you want a string representation
    name = name.substring(0, name.indexOf(']'));  // name = "2"
    

    【讨论】:

      【解决方案2】:

      如果一直是那个格式,即entry[x],那么你可以使用正则表达式;

      var elename = $("#secondEntry").attr('name'); var i = elename.match("entry\\[([0-9])+\\]"); var ind = i[1];

      【讨论】:

      • 如果你想要它作为一个数字,var ind = parseInt(i[1])。但是从正则表达式中删除“条目”,这样它就不会脆弱(不会因名称更改而中断)。
      【解决方案3】:
      var re = /entry\[(\d{1})\]/;
      var index = re.exec(string);
      

      【讨论】:

        【解决方案4】:

        您可以使用regular expressions 来解决问题。

        【讨论】:

          【解决方案5】:
          var name  = $("#secondEntry").attr('name');
          var index = name.substring( 6, name.length - 1 );
          

          【讨论】:

          • 当然,这适用于他的示例数据,但 wow 它是脆弱的。如果他在某个时候将entry 更改为item,或者超过九个,或者...
          • 当然它只适用于“入口”,但这就是他所关注的(而且 RegExp 解决方案也不是更通用);关于你的第二个论点:'entry[12413525]'.substring( 6, 'entry[12413525]'.length - 1 ) 给了我"12413525"
          • 关于第一项:是的,好吧,我也评论了我读过的另一项。关于第二项:Doh!我只是完全误读了长度位。
          猜你喜欢
          • 2015-12-14
          • 1970-01-01
          • 1970-01-01
          • 2012-03-03
          • 2020-11-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多