我有一个多选标签,请看脚本
<select multiple="multiple" size="5" id="cities_select">
<option value="1">city1</option>
<option value="2">city2</option>
<option value="3">city3</option>
<option value="4">city4</option>
<option value="5">city5</option>
<option value="6">city6</option>
................................
</select>
和 jquery 脚本:
$("#supply_cities_select").change(function()
{
var i = 1;
$('#supply_cities_select :selected').each(function(u)
{
src += '&c'+i+'='+$(this).val();//generates the string like &c1=1&c2=2&c3=7...
i++;
});
})
我需要我的字符串不包含大于 5 的元素
例子:
如果我已经有 5 个选定元素,我的字符串看起来像
&c1=2&c2=3&c3=5&c4=6&c5=7
现在如果还要选择一个选项,我需要获取字符串
&c1=3&c2=5&c3=6&c4=7&c5=8
如果很短,我需要删除第一个选定元素的选定属性。
(但是我不能在这里使用.first
,因为它可以是第一个被选中的元素N8)
我该怎么做?
非常感谢。
更新
var a = $("#supply_cities_select :selected").length;
if(a > 5)
{
$("#supply_cities_select :selected:lt(1)").attr("selected",false);
}
它只是删除了第一个选择的选项,不是吗?
最佳答案
你可以用更简单的方式来做这件事 .map()
和 :lt()
像这样:
var src;
$("#supply_cities_select").change(function() {
src = $("#supply_cities_select :selected:lt(5)").map(function(i) {
return '&c'+(i+1)+'='+this.value; //i starts at 0, so add 1
}).get().join('');
});
You can try a demo here . :lt()
选择器获取前 5 个(小于 5,从 0 开始,所以 (0-4),然后我们使用 .map()
将值放入数组,然后调用 .join()
获取该数组的字符串加在一起。
对于更新:要获取最后 5 个元素,最好使用 .slice()
,像这样:
var src;
$("#supply_cities_select").change(function() {
src = $("#supply_cities_select :selected").slice(-5).map(function(i) {
return '&c'+(i+1)+'='+this.value; //i starts at 0, so add 1
}).get().join('');
});
关于javascript - 删除选择标签中第一个选定元素的选定属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3335117/