获取所有选定的项目以及在 jquery 处单击的位置
get all selected items and where it was clicked at jquery
我需要 select selected 选项以及单击它们的位置以使用 jquery 存储信息。
The table structure i am building
HTML STRUCTURE
我需要知道这两个星期都点击了哪些选项,例如有人在第 1 周选择了选项 1 和 2,在第 2 周选择了选项 3 和 4
在 jquery 中 select 执行此操作的最佳方法是什么,目前我正在 select 执行所有 selected 选项,如下所示:
let selected = $("select > option:selected")
.map(function () {
return this.value;
})
.get();
<table id="table_id">
{foreach from=$DATA_EXAMPLES key=key item=DATA_EXAMPLE}
<th>{$DATA_EXAMPLE}</th>
<td>
<select id="option_id" name="options_name" multiple size="5">
{foreach from=$SOME_DATAS item=SOME_DATA}
<option value="{$SOME_DATA}">{$SOME_DATA}</option>
{/foreach}
</select>
</td>
{/foreach}
</table>
要执行您需要的操作,请将数组单独映射到 select,而不是它们的 selected 选项。这将构建一个二维数组,每个 select.
一个子项
$('select').on('change', () => {
let selected = $("select").map((i, el) => [$(el).val()]).get();
console.log(selected);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="table_id">
<th>Week 1</th>
<td>
<select name="options_name" multiple size="5">
<option value="Option 1">Option 1</option>
<option value="Option 2">Option 2</option>
<option value="Option 3">Option 3</option>
<option value="Option 4">Option 4</option>
<option value="Option 5">Option 5</option>
</select>
</td>
<th>Week 2</th>
<td>
<select name="options_name" multiple size="5">
<option value="Option 1">Option 1</option>
<option value="Option 2">Option 2</option>
<option value="Option 3">Option 3</option>
<option value="Option 4">Option 4</option>
<option value="Option 5">Option 5</option>
</select>
</td>
</table>
In the case where i would want to label it as following : Week 1 : Option 1, Option 2, etc.. Week 2: Option 3, Option 4, etc
在这种情况下,您可以构建一个由同级 th
元素中的值作为键的对象:
$('select').on('change', () => {
let selected = $("select").map((i, el) => ({
[el.parentElement.previousElementSibling.textContent]: $(el).val()
})).get();
console.log(selected);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="table_id">
<th>Week 1</th>
<td>
<select name="options_name" multiple size="5">
<option value="Option 1">Option 1</option>
<option value="Option 2">Option 2</option>
<option value="Option 3">Option 3</option>
<option value="Option 4">Option 4</option>
<option value="Option 5">Option 5</option>
</select>
</td>
<th>Week 2</th>
<td>
<select name="options_name" multiple size="5">
<option value="Option 1">Option 1</option>
<option value="Option 2">Option 2</option>
<option value="Option 3">Option 3</option>
<option value="Option 4">Option 4</option>
<option value="Option 5">Option 5</option>
</select>
</td>
</table>
我需要 select selected 选项以及单击它们的位置以使用 jquery 存储信息。
The table structure i am building
HTML STRUCTURE
我需要知道这两个星期都点击了哪些选项,例如有人在第 1 周选择了选项 1 和 2,在第 2 周选择了选项 3 和 4
在 jquery 中 select 执行此操作的最佳方法是什么,目前我正在 select 执行所有 selected 选项,如下所示:
let selected = $("select > option:selected")
.map(function () {
return this.value;
})
.get();
<table id="table_id">
{foreach from=$DATA_EXAMPLES key=key item=DATA_EXAMPLE}
<th>{$DATA_EXAMPLE}</th>
<td>
<select id="option_id" name="options_name" multiple size="5">
{foreach from=$SOME_DATAS item=SOME_DATA}
<option value="{$SOME_DATA}">{$SOME_DATA}</option>
{/foreach}
</select>
</td>
{/foreach}
</table>
要执行您需要的操作,请将数组单独映射到 select,而不是它们的 selected 选项。这将构建一个二维数组,每个 select.
一个子项$('select').on('change', () => {
let selected = $("select").map((i, el) => [$(el).val()]).get();
console.log(selected);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="table_id">
<th>Week 1</th>
<td>
<select name="options_name" multiple size="5">
<option value="Option 1">Option 1</option>
<option value="Option 2">Option 2</option>
<option value="Option 3">Option 3</option>
<option value="Option 4">Option 4</option>
<option value="Option 5">Option 5</option>
</select>
</td>
<th>Week 2</th>
<td>
<select name="options_name" multiple size="5">
<option value="Option 1">Option 1</option>
<option value="Option 2">Option 2</option>
<option value="Option 3">Option 3</option>
<option value="Option 4">Option 4</option>
<option value="Option 5">Option 5</option>
</select>
</td>
</table>
In the case where i would want to label it as following : Week 1 : Option 1, Option 2, etc.. Week 2: Option 3, Option 4, etc
在这种情况下,您可以构建一个由同级 th
元素中的值作为键的对象:
$('select').on('change', () => {
let selected = $("select").map((i, el) => ({
[el.parentElement.previousElementSibling.textContent]: $(el).val()
})).get();
console.log(selected);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="table_id">
<th>Week 1</th>
<td>
<select name="options_name" multiple size="5">
<option value="Option 1">Option 1</option>
<option value="Option 2">Option 2</option>
<option value="Option 3">Option 3</option>
<option value="Option 4">Option 4</option>
<option value="Option 5">Option 5</option>
</select>
</td>
<th>Week 2</th>
<td>
<select name="options_name" multiple size="5">
<option value="Option 1">Option 1</option>
<option value="Option 2">Option 2</option>
<option value="Option 3">Option 3</option>
<option value="Option 4">Option 4</option>
<option value="Option 5">Option 5</option>
</select>
</td>
</table>