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);
       }
    });
}

問題は、それが効果がないことです!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;
}
4

1 に答える 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);
       }
    });
}
于 2013-01-16T12:20:41.073 に答える