如何从具有相同名称的多个元素中获取单击元素,但数组的索引不同

时间:2019-10-19 16:35:31

标签: jquery

我有一个问题。我有名称相同但索引不同的选择选项列表。 当我单击其中一个元素时,我不知道如何检测元素。 示例:

<select name='contract_sides[0][joint_venture]'>
</select>
<select name='contract_sides[0][company_id]'>
</select>

<select name='contract_sides[1][joint_venture]'>
</select>
<select name='contract_sides[1][company_id]'>
</select>
...........
<select name='contract_sides[n][joint_venture]'>
</select>
<select name='contract_sides[n][company_id]'>
</select>

当我更改值之一时。我将在下面显示/隐藏<select name="contract_sides[index]company_id"></select>。 非常感谢你的帮助。对不起我的英语不好 ! P / s:如果使用类,问题会更简单,但问题是我们只能使用名称。

光的解决方案:

$('select[name*="joint_venture"]').on('change', function () {    
  let name = $(this).attr('name');
  let index = name.match(/\[([0-9]*)\]/)[1];

  // Hide the company id
  $(`select[name="contract_sides[${index}][company_id]"]`).hide();
});

1 个答案:

答案 0 :(得分:1)

$('select[name*="contract_sides"]').on('click', function () {
    // Your clicked element is now $(this)    
    let $this = $(this);

    // Name of the clicked element
    let name = $this.attr('name');

    // Index of the clicked element
    let index = name.match(/\[([0-9]*)\]/)[1];
});

在您对其他答案的评论之后,我对您的需求有了更多的了解,并且我相信这应该符合您的要求

$('select[name*="joint_venture"]').on('change', function () {    
  let name = $(this).attr('name');
  let index = name.match(/\[([0-9]*)\]/)[1];

  // Hide the company id
  $(`select[name="contract_sides[${index}][company_id]"]`).hide();
});