Jquery + $ .each +动态操作+使用参数

时间:2014-03-25 17:28:31

标签: javascript jquery

function Controles(contro, nomtab, numtab, action, nomcla, tipdat, lista, datos) {

    $(document).on('click', '.'+contro+' #IZQTOD', function(event) {
        $.getJSON(action+'&rows='+rows+'&page=1', function(datos) {
            var nuevafila;
            $.each(datos+tipdat, function(index, data) {
                nuevafila = nuevafila + "<tr class='Fila-Grid-"+nomcla+"' id='" + numtab + (index + 1) + "'>";
                nuevafila = nuevafila + "<td class='Columna1'>" + (index + 1) + "</td>";
                var list = lista.split("-");
                for (var j = 1; j < list.length; j++) {
                    nuevafila = nuevafila + "<td class='Borde-'>" + data+list[j] + "</td>"; 
                }
                nuevafila = nuevafila + "</tr>";
            });
            $('#'+nomtab+' tr:eq(1)').after(nuevafila);
        });
    });
}

我希望将这段代码作为javascript的函数运行,以便重用代码。 对我不起作用的部分是每个部分: $。每个(+ tipdat数据,函数(索引,数据){

“datos”是带变量的对象(set和get)(codcli,name,apepat) 我的意思是打电话给codcli:

   $. each (datos.codcli, function (index, data) {
}

但这种方式是静态的。我想通过动态参数来做。

那么问题是如何传递参数才能成功实现?或者是你不能做到的?永远都会有静态的?

在我上面的代码中我想做的是,但显然不起作用:

tipdat=".codcli"
   $. each (datos+tipdat, function (index, data) {
}

1 个答案:

答案 0 :(得分:1)

我认为你正在寻找括号表示法。

var tipdat = "codcli";
$.each(datos[tipdat], function (index, data) {
    //...
});

与:

相同
$.each(datos.codcli, ...

如果你的字符串有多个属性,我会这样做:

var tipdat = "codcli.cod";

var objToIterate = datos;
var parts = tipdate.split('.');

for(var i = 0; i< parts.length; i++) {
    objToIterate = objToIterate[parts[i]];   
}

$.each(objToIterate, function (index, data) {
    //...
});