.each(从html元素生成下拉列表,替换元素)

时间:2014-11-12 19:47:00

标签: javascript jquery

我需要一些帮助。 我在div中有一些数据。我设法从每个div中提取数据并从中提取下拉列表。 现在,某些元素(示例中的类.change)应该替换为那些下拉列表,并且在那里我纠缠在.each函数中。怎么解决?

// convert data from div to dropdown
$('.wrap').each(function () {
    var $select = $('<select />');
    $(this).find('.answer').each(function () {
        var $option = $('<option />');
        $option.attr('value', $(this).next().html()).html($(this).html());
        $select.append($option);
    });

    $(this).replaceWith($select);

    // replace .change with dropdown
    $(".change").each(function () {
        $(this).replaceWith($select);
    });
});

http://jsfiddle.net/shinzon/jgj6whmx/

1 个答案:

答案 0 :(得分:0)

问题是您尝试使用每个.change创建的下拉列表填充每个.wrap,而您只想更改下一个{。}}。

// convert data from div to dropdown
$('.wrap').each(function () {
    var $select = $('<select />');
    $(this).find('.answer').each(function () {
        var $option = $('<option />');
        $option.attr('value', $(this).next().html()).html($(this).html());
        $select.append($option);
    });

    // remove old unneeded div
    $(this).remove();

    // replace first .change with dropdown
    $(".change:first").replaceWith($select);
});

小提琴:http://jsfiddle.net/jgj6whmx/5/