0

イベントを生成されたHTMLにバインドする場合は、のようなものを使用する必要がありますが、次のようなイベントをバインドする場合に.on()のみ使用しました。.click().

色のリストを適用するWebアプリを作成しています。色はJSONファイルから生成されます。フェッチしたら、属性に特定の情報を含めてページに追加します。新しく生成されたHTMLであるlist-elementsで何かをしたいと思います。しかし、console.log()私に見せているのは、親には何もないということですul。ページに新しく追加されたコンテンツが表示されますが。

これがそれに基づいたコード全体です。

var setColors = function(){

    getColors = function(){
        $.getJSON('js/colors.json', function(colors) {
                $.each(colors, function(i, colors) {
                //console.log(colors);
                    $('<li>', {
                        text: colors['color'],
                        'name' : colors['color'],
                        'data-hex' : colors['hex'],
                        'data-var' : colors['var']
                    }).appendTo('#picker');
                })
        });

        addColors();
    }

    addColors = function(){
        var el = $('#picker').children;
        $(el).each(function(){
            console.log($(this));
        });
    }

    return getColors();
}


$(function(){

    setColors();

});

addColors()は私が問題を抱えているところです。エラーには、「Uncaughtofnull」TypeError: Cannot read property 'firstChild'と表示されます。新しく生成されたHTMLをどのように操作できますか?

4

2 に答える 2

3

子メソッドに括弧がありません:

var el = $('#picker').children();

getJSONまた、新しく生成されたhtmlでaddColorメソッドを実行する場合は、htmlが生成された後、コールバックメソッド内から呼び出しを追加する必要があります。

于 2013-03-06T21:01:26.853 に答える
0
addColors = function(){
    var el = $('#picker').children;
    $(el).each(function(){
        console.log($(this));
    });
}

いくつかの問題:

  1. 端欠けセミカラー
  2. かっこがありません.children()
  3. children() は jQuery オブジェクトを返します。$(el)

更新しました:

window.addColors = function(){
    var $el = $('#picker').children();
    $el.each(function(){
        // do stuff here, but could attach each() to above, after children()
    });
};
于 2013-03-06T21:09:14.267 に答える