jQuery转换选择单选按钮?

前端之家收集整理的这篇文章主要介绍了jQuery转换选择单选按钮?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用 jquery将选择框转换为单选按钮,我不确定最好的方法.

示例HTML:

<form id="product">    
    <select name="data[123]">
      <option value="1">First</option>
      <option value="2">Second</option>
      ......
      <option value="n">xxxxxx</option>
    </select>
  </form>

我想在页面加载时使用jquery将其转换为:

<form id="product">
  <input type="radio" name="data[123]" value="1" />
  <label for="data[123]">First</label><br/>
  <input type="radio" name="data[123]" value="2" />
  <label for="data[123]">Second</label><br/>
  ......
  <input type="radio" name="data[123]" value="n" />
  <label for="data[123]">xxxxxx</label><br/>
</form>

它需要是动态的,因此它将动态循环每个选择框和内部的每个选项(因为不同的产品有不同的选项)

我想找到最好的方法.要么首先得到所有值的多维数组,然后构建单选按钮..或者在循环中一次交换一个.目前正在尝试前者,但我想我可能会过度思考它:

$(document).ready(function(){

    //Get Exising Select Options    
    $('form#product select').each(function(i,select){
        $(select[i]).find('option').each(function(j,option){
            //alert($(option).text());
            option[j] = [];
            option[j]['text'] = $(option).text();
            option[j]['val'] = $(option).val();
        });
    });


    //Remove Select Box
    $('form#product select').remove();
});

有没有人试过这个或者有一些秘密/更简单的方法来做我错过的?

解决方法

我把它放在一起,并在几个浏览器中进行测试,似乎都处理得很好.它会从< option>中获取数据.元素并创建< input />< label />< br />对于每个,然后删除选择框.
//Get Exising Select Options    
$('form#product select').each(function(i,select){
    var $select = $(select);
    $select.find('option').each(function(j,option){
        var $option = $(option);
        // Create a radio:
        var $radio = $('<input type="radio" />');
        // Set name and value:
        $radio.attr('name',$select.attr('name')).attr('value',$option.val());
        // Set checked if the option was selected
        if ($option.attr('selected')) $radio.attr('checked','checked');
        // Insert radio before select Box:
        $select.before($radio);
        // Insert a label:
        $select.before(
          $("<label />").attr('for',$select.attr('name')).text($option.text())
        );
        // Insert a <br />:
        $select.before("<br/>");
    });
    $select.remove();
});
原文链接:https://www.f2er.com/jquery/179040.html

猜你在找的jQuery相关文章