我有一个问题。我有名称相同但索引不同的选择选项列表。 当我单击其中一个元素时,我不知道如何检测元素。 示例:
<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();
});
答案 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();
});