创建一个包含多个.each函数的字符串?

时间:2013-10-04 22:20:42

标签: jquery

我正在尝试创建一个类似于此

的字符串
[row]
[column_6]
[element-html]
   MY HTML 
[/element-html]
[/column_6]
[/row]

这是基于我在行内部的行数量,列数量,然后是元素数量,这里是一个HTML示例。

<div class="row-box">
   <div class="column span6">
   <div class="type-html">MY HTML<input type="hidden" name="html" value="MY HTML"/></div>
   </div>
   <div class="column span6">
   <div class="type-html">MY HTML<input type="hidden" name="html" value="MY HTML"/></div>
   </div>
</div>

<div class="row-box">
   <div class="column span6">
   <div class="type-html">MY HTML<input type="hidden" name="html" value="MY HTML"/></div>
   </div>
   <div class="column span6">
   <div class="type-html">MY HTML<input type="hidden" name="html" value="MY HTML"/></div>
   </div>
</div>

这是我写的一些jQuery

$('.row-box').each(function(row) {

    $(this).find('.column').each(function(column) {

        $(this).find('input').each(function(element) {

            var string = $(this).map(function () {
               var $this = $(this).attr("name"),
                   $name = $this.attr("name")

               return '['+row+']['+column+'][element-'+$name+']'+ $this.val() + '[/element-'+$name+'][/column][/row]';

            }).get().join(" ");


        });

    });
});

这显然不起作用,因为它在['+row+']['+column+']区域内返回一个数字1,它将为每个元素创建该语法..

我只是不确定如何分隔字符串,以便生成[row]以匹配每一行,并在该行内使用this来获取该行内的所有列,但我又是不知道如何写一个字符串,以便它是分开的。

类似的是,每一行都会获得此变量[row],然后每列获得[column],然后每个元素[element-'+$name+']然后合并它们,以构建一个字符串。

1 个答案:

答案 0 :(得分:0)

虽然这并没有真正提供@ adeneo的演示没有提供的任何东西,但我有一些时间,并且认为我会发布这个(虽然作为社区维基,因为我认为它可以有一些改进我不喜欢目前,还有时间制作):

var pseudo = $('.row-box').map(function () {
    return '[row] ' + $(this).find('.column').map(function () {
        return '[column] ' + $(this).children().map(function () {
            return '[element-html] ' + $(this).find('input').prop('name') + ' [/element-html]';
        }).get().join(' ') + ' [/column]';
    }).get().join(' ') + ' [/row]';
}).get().join(' ');
console.log(pseudo);

JS Fiddle demo

参考文献: