使用Jquery遍历修改HTML

3
我是一个有用的助手,可以为您翻译文本。
我有一个jQuery的问题。我想编写一个函数,动态替换我的HTML中的一些内容。
这是该函数:
function renderPage(datas, html) {
    $(html).find("*").each(function(){
       if ($(this).attr("data-func")) {
           var df = $(this).attr("data-func");
           var content = null;
           eval("content = " + df + "($(this),datas);");
           console.log(content);
       }
    });
}

问题是,它没有效果!我在日志中看到内容变量是正确的,但输出没有变化。
我的 eval 函数:
function fill(element,data) {
    element.html("BASSZA MEG");
    var events = data.events;

    var i = 0;
    var n = events.length;

    for (;i<n; i++) {
        obj = events[i];
        var tr = $("<tr>");
        var nev = $("<td>");
        var link = $("<a href='programbelso.html#id="+obj["event_id"]+"&logo="+obj["event_logo"]+"'>");
        link.html(obj["event_name"]);
        nev.append(link);
        tr.append(nev);
        element.append(tr);
    }

    console.log("element: " + element);
    return element;
}

1
控制台说了什么? - Joseph
1个回答

1
首先,不要循环遍历文档中的每个元素,然后使用一个if()语句。你可以通过使用正确的选择器来大大提高性能。
以下示例应该可以实现你想要的功能,而无需使用邪恶的eval()函数:
function renderPage(datas, html) {
    $('[data-func]').each(function() {
       var df = $(this).attr("data-func");
       var the_func = window[$(this).attr("data-func")]; 

       if(typeof the_func === 'function') {
           var content = the_func($(this), datas);
           console.log(content);
       }
    });
}

控制台上实际显示了什么? - BenM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接