jQuery选择器无法读取document.ready()上的load()内容?

jQuery选择器无法读取document.ready()上的load()内容?,jquery,wordpress,load,jplayer,Jquery,Wordpress,Load,Jplayer,我知道你们可能都认为on()是解决方案,我希望如此,但我已经尝试过了,却无法找到答案。我有一个jQuery函数,它使用('audio')为jPlayer创建播放列表。音乐分为类别和帖子我希望播放器在浏览类别时从帖子中加载歌曲。所以它是这样的: var songsforjplayer = []; $('body').append('<div id="newsongs" style=""></div>'); $('#newsongs').load('ht

我知道你们可能都认为on()是解决方案,我希望如此,但我已经尝试过了,却无法找到答案。我有一个jQuery函数,它使用('audio')为jPlayer创建播放列表。音乐分为类别和帖子我希望播放器在浏览类别时从帖子中加载歌曲。所以它是这样的:

var songsforjplayer = [];   
    $('body').append('<div id="newsongs" style=""></div>');
    $('#newsongs').load('http://sample_post audio');

    var singlesonglist = $('audio'); //selector doesn't recognize freshly load audio so it doesnt include them inplaylist
    singlesonglist.each(function(i){
        var source = $(this).attr('src');
        songsforjplayer[i]= {
            title:  $('track',this).attr('src'),
            oga: source,
        }

        });
var songsforjplayer=[];
$('body')。追加('');
$('#新闻歌曲')。加载('http://sample_post 音频);;
var singlesonglist=$('audio')//选择器无法识别新加载的音频,因此它不会在播放列表中包含它们
singlesonglist.each(函数一){
var source=$(this.attr('src');
歌曲播放器[i]={
标题:$('track',this).attr('src'),
奥加:来源,
}
});
我曾尝试将on()用于各种事件类型—事实上,没有事件—它应该在类别页面准备就绪时触发,但它不会使选择器捕捉新的音频标记


有什么想法吗?

每次加载新音频时,都必须重新运行此代码,以使用页面中的任何新音频刷新播放列表,并且必须在.load()完成后使用.load()方法上的完成函数运行代码。一种方法是:

var songsforjplayer;

function updatePlaylist() {
    songsforjplayer = [];
    var singlesonglist = $('audio');
    singlesonglist.each(function() {
        var source = $(this).attr('src');
        songsforjplayer.push({
            title:  $('track',this).attr('src'),
            oga: source
        });
    });
}

$('body').append('<div id="newsongs" style=""></div>');
$('#newsongs').load('http://sample_post audio', updatePlaylist);
var-songsforjplayer;
函数updatePlaylist(){
songsforjplayer=[];
var singlesonglist=$('audio');
singlesonglist.each(函数(){
var source=$(this.attr('src');
songsforjplayer.push({
标题:$('track',this).attr('src'),
oga:来源
});
});
}
$('body')。追加('');
$('#新闻歌曲')。加载('http://sample_post 音频”,更新播放列表);
请记住,
.load()
是异步的。它需要一段时间才能完成,并且在后台运行,而其他代码正在运行。调用
.load()
之后的代码将在
.load()
完成之前运行。确保一段代码在
.load()
完成后运行的唯一方法是使用补全函数,如上面代码中所示

我还删除了
oga:source
之后的一个额外逗号,这在旧版本的IE中可能是一个错误。

问题是load()是一个ajax方法。根据定义,AJAX是异步的,所以在加载完成之前,您的播放器代码正在运行。您需要从load success回调中调用插件

var songsforjplayer = [];
$('body').append('<div id="newsongs" style=""></div>');
$('#newsongs').load(url, function() {
    /* inisde the success callback the new html exists and can now attach events */
    var singlesonglist = $('audio'); //selector doesn't recognize freshly load audio so it doesnt include them inplaylist
    singlesonglist.each(function(i) {
        var source = $(this).attr('src');
        songsforjplayer[i] = {
            title: $('track', this).attr('src'),
            oga: source,
        }

    });
});
var songsforjplayer=[];
$('body')。追加('');
$(“#新闻歌曲”).load(url,函数(){
/*在成功回调中,新html已存在,现在可以附加事件*/
var singlesonglist=$('audio');//选择器无法识别新加载的音频,因此它不会将它们包含在播放列表中
singlesonglist.each(函数一){
var source=$(this.attr('src');
歌曲播放器[i]={
标题:$('track',this).attr('src'),
奥加:来源,
}
});
});

当然不是。它还没有加载
load()
是异步的。但是新的音频(#新闻歌曲)在页面上加载,所以在document.ready()之后加载。“音频”选择器是在我用新音频渲染新闻歌曲之后使用的。它的字面意思是:`(function($){(jQuery)(document).ready(function(){var songsforjplayer=[];…`有什么想法吗?但是
.load()
是异步的,可以在
document.ready()
之后完成,所以你必须在
.load()之后更新歌曲列表
完成。请参阅我回答中的说明。我在document.ready之前定义了updatePlaylist(),并在document.ready()中的load()之后调用:
$('#newsongs')。load('http://localhost/houseofgood.info/50/mashup-rework-remix-mix/ audio',updatePlaylist());
我甚至还添加了新的JplayerPaylist()updatePlaylist()中的一段代码并创建了它。它确实从内容中的歌曲创建播放列表,但没有附加来自#新闻歌曲的“音频”。#新闻歌曲在底部可见并可以播放。我在这里失去了理智。不知怎的,它仍然是“音频”选择器。你似乎不理解
.load()
是异步的。需要一段时间才能完成,加载完成后运行代码的唯一方法是使用完成函数,如我在回答中所示。在
.load()之后立即执行代码
将在完成之前运行。您是否尝试在我的答案中编写代码?我不能说更多。非常抱歉!!我实际上尝试了您的代码并获得了异步部分,但是我使用了updatePlaylist(),但它不起作用。我相信您假设我会在“$('newsongs')中编写
函数(){updatePlaylist()};
加载()作为回调;我是这样一个nOOb。再次感谢!我在document.ready之前定义了updatePlaylist(),并在document.ready()中的load()之后调用。ready():
$('#newsongs')。load('http://localhost/houseofgood.info/50/mashup-rework-remix-mix/ audio',updatePlaylist());
我甚至在updatePlaylist()中添加了新的JplayerPaylist()代码它创建了它。它确实从内容中的歌曲创建了播放列表,但没有添加来自#新闻歌曲的“音频”。#新闻歌曲在底部可见并且可以播放。我在这里失去了理智。不知何故,它仍然是“音频”选择器。现在,你正在引入与你提供的代码不匹配的新信息和功能…不是很多n在那里帮忙