如何在jQuery中为选择器返回这个数组索引?

时间:2012-04-22 20:20:16

标签: jquery jquery-selectors

如何使alert()返回123,456或第n组密钥?

我想检索索引键是对相应的选项值进行一些链式操作。

注意:索引键也可以是字母数字。

HTML:

<select name="option[group][123]">
    <option>a</option>
    <option>b</option>
</select>
<select name="option[value][123]">
    <option>1</option>
    <option>2</option>
</select>

<select name="option[group][456]">
    <option>a</option>
    <option>b</option>
</select>
<select name="option[value][456]">
    <option>1</option>
    <option>2</option>
</select>

脚本:

$("select[name^='option[group]']").change(function(){
  alert('Index:' + $(this).fieldsetIndexKeyIdentifier());
  // Do something with option values of group
});

2 个答案:

答案 0 :(得分:2)

您可以使用名称属性解析它:

$("select[name^='option[group]']").change(function(){
    var nums = this.name.match(/\[(\d+)\]$/)
    if (nums) {
        alert('Index:' + nums[1]);
    }
  // Do something with option values of group
});

此处的演示演示:http://jsfiddle.net/jfriend00/TcRzW/

或者,如果你想要名字中最后一个索引的任何字符序列,那就是:

$("select[name^='option[group]']").change(function(){
    var nums = this.name.match(/\[([^\]]+)\]$/)
    if (nums) {
        alert('Index:' + nums[1]);
    }
  // Do something with option values of group
});

此处的演示演示:http://jsfiddle.net/jfriend00/TcRzW/

如果你现在想知道你正在做哪个组号,你可以这样做:

var selectGroups$ = $("select[name^='option[group]']");
selectGroups$.change(function(){
    var index = selectGroups$.index(this);
    // index will be a number like 0, 1, 2, 3 for which
    // sequential "select[name^='option[group]']" we are operating on.
});

答案 1 :(得分:-1)

这并没有直接回答这个问题,但我完成了这样的链式选择字段:

$("select[name^='option[group]']").change(function(){
    var valueField = this.name.replace(/group/, 'value');
    $("select[name='"+ valueField +"']").somefunction(...);
});