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