javascript - 删除选择标签中第一个选定元素的选定属性?

标签 javascript jquery

我有一个多选标签,请看脚本

<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('');
})​;

You can give it a try here .

关于javascript - 删除选择标签中第一个选定元素的选定属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3335117/

相关文章:

javascript - 在网页上将 PDF 文件显示为轮播,每页作为单独的幻灯片

javascript - 计算 jquery php 中每个 div 的类数

javascript - 如何在 react 中运行脚本

javascript - jquery 像数组一样填充对象

javascript - 如何在 Highcharts 的轴的两侧复制 Y 轴的值

javascript - 获取表单中单击按钮的 ID 时出错

JavaScript 嵌套循环

javascript - 理论上,这个 For-Loop 应该工作吗?

javascript - 如何在数组上使用 .charCodeAt?

javascript - 更新图表中的数据(下拉)