javascript - Jquery 用每个修改 html

标签 javascript jquery html web

我对 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;
}

最佳答案

首先,不要遍历文档中的每个元素,然后使用 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);
       }
    });
}

关于javascript - Jquery 用每个修改 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14358225/

相关文章:

javascript - 如何制作一个刷新时不重新启动的jquery倒计时器

javascript - 如何在react.js 中使列表项可单独点击

javascript - JQuery .replaceWith() 突然将新元素放在错误的位置?

php - 输入类型文件验证,因为 id 属性是数组而不是单个值

java - iText:从a3中的html生成pdf文件

javascript - 如何停止带有 li 元素的非常基本的 slider 中的无限幻灯片?

javascript - 带有外部 CSV 的 Highchart(在外部域中)

javascript - 压缩整个网页(HTML 和 JS)

javascript - 如何在另一个 mixins 函数中使用 mixins 函数?

javascript - 奇怪的 jquery 动画行为