使用jquery将列表转换为select

时间:2010-04-17 07:58:00

标签: jquery

我正在尝试将以下列表转换为选择列表,以便可以通过表单提交 - 列表中的元素将成为每个选项的值:

<ul class="selected connected-list ui-sortable" style="height: 279px;">
<li class="ui-helper-hidden-accessible" style=""></li>
<li title="Owner Name 1 - " class="ui-state-default ui-element ui-draggable" style="display: block; position: relative; top: 0px; left: 0px;"><span class="ui-icon-arrowthick-2-n-s ui-icon"></span>Owner Name 1 - <em class="thenumber">4.4796E+11</em><a class="action" href="#"><span class="ui-corner-all ui-icon ui-icon-minus"></span></a></li>
<li title="David Moffat - " class="ui-state-default ui-element" style="display: block; position: relative; top: 0px; left: 0px;"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>David Moffat - <em class="thenumber">07730423005</em><a class="action" href="#"><span class="ui-corner-all ui-icon ui-icon-minus"></span></a></li>
</ul>

这应该转换为以下格式:

<select style="display:none" class="selectoption" name="p_num[]" multiple="multiple">
<option value="">4.4796E+11</option>
<option value="">07730423007</option>
</select>

我尝试过以下jquery代码,但是经过几个小时后我才把头发拉出来:

$('a.sendform').click(function(){
 $('ul.selected').each(function() {
  var $select = $('<select />');

  $(this).find('li').each(function() {
   var $option = $('<option />');
   $option.attr('value', $(this).('em')).html($(this).html());
   $select.append($option);
  });
  $(this).replaceWith($select);
 });
});

任何帮助都可以保存我剩余的头发。

非常感谢

大卫

2 个答案:

答案 0 :(得分:3)

$('a.sendform').click(function() {
    var $select = $('<select style="display:none" class="selectoption" name="p_num[]" multiple="multiple" />');
    $('li em').each(function(i, el) {
        $select.append('<option value="">' + $(el).text() + '</option>');
    });
    $(this).replaceWith($select);
    return false;
});

由于隐藏了选择(display:none),您可能看不到它实际上替换了锚标记。

答案 1 :(得分:0)

这是“地图”方法的完美用法。

$(".connected-list > li:has(em)").map(function(index,elem){
    return $("<option/>").attr("value","").html($("em", $(elem)).html());
}).appendTo('.selectoption');

jQuery Map API Page