Jquery Javascript检查元素附加的最佳方法

时间:2014-09-08 17:37:25

标签: javascript jquery

我有一个在Ajax调用后动态追加的元素列表。我正在使用一个插件,为动态附加的锚创建一个lightbox click事件。它工作正常,但有时它说标题是未定义的。我意识到这是因为插件在title属性完全附加到DOM之前启动。我知道有几种方法可以做到这一点,但检查所有这些元素是否完全附加的最佳方法是什么?

已经进行了Ajax调用,并使用此函数解析数据(colorbox title是仅针对某些人评估为'undefined'的那个):

function pageImages(images,_q){
    for(var i = 0; i < images.count; i++){
        $('#pageImages').append('<div class="pageImageItem"><a href="' + images.data[i]._clickurl + '" title= "' + images.data[i]._title + '">\
            <img src="' + images.data[i]._thumbnailUrl + '" alt= "' + images.data[i]._title + '"/>\
            </a><div class="hoverInfo"><a href="' + images.data[i]._clickurl + '"><h2>' + images.data[i]._title + '</h2><p>' + limitCharacters(images.data[i]._clickurl,40) + '</p></a></div></div>');
    }


    $(".pageImageItem a").colorbox({maxWidth:'95%', maxHeight:'95%', title: function(){
        var url = $(this).attr('href'),
            title = $(this).attr('title');

        console.log(title);
        return '<h2>' + title + '</h2><a href="' + url + '" target="_blank">' + limitCharacters(url,40) + '</a>';
    }});


}

这是一张正在发生的事情的图片(突出显示的锚点是明显具有title属性但在灯箱中显示未定义的元素): enter image description here

1 个答案:

答案 0 :(得分:-1)

您可以在没有timevalue的情况下将jQuery元素find块包装在超时中。超时将等待所有进程完成所有javascript。例如:

window.setTimeout(function() {
    $(".pageImageItem a").colorbox({maxWidth:'95%', maxHeight:'95%', title: function(){
        var url = $(this).attr('href'),
            title = $(this).attr('title');

        console.log(title);
        return '<h2>' + title + '</h2><a href="' + url + '" target="_blank">' + limitCharacters(url,40) + '</a>';
    }});
});