0

我知道如果我想将事件绑定到生成的 HTML,我需要使用类似的东西.on(),但我只在绑定事件时使用它.click().

我正在创建一个应用颜色列表的网络应用程序。颜色是从 JSON 文件生成的。获取后,我将其添加到页面中,并在属性中包含某些信息。我想对新生成的 HTML 做一些事情,即列表元素。但是console.log()向我展示的是 parent 中没有任何内容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() 是我遇到问题的地方。错误说'未捕获TypeError: Cannot read property 'firstChild'空值。如何使用新生成的 HTML?

4

2 回答 2

3

您在 children 方法中缺少括号:

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

此外,如果您希望在新生成的 html 上执行 addColor 方法,则必须在生成 html 后从getJSON回调方法中添加对它的调用。

于 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 回答