首先,我将简要介绍一下我要完成的工作。
我有一个主要的PHP页面,可以从mySQL数据库加载图像,文本和视频(使用JWPlayer播放),并使用Masonry进行布局。我也在使用Infinite-Scroll,它使用以下代码加载其他内容:
$container.masonry( 'appended', $newElems, true );
通过名为loadMore.php的
的PHP页面加载其他内容<nav id="page-nav">
<a href="loadMore.php?n=2"></a>
</nav>
在上面的 lodeMore.php 页面中,我正在从数据库中加载更多文本,图像和视频。如果从数据库加载的项目是视频,我尝试使用名为“ videoPlayer.php ”的php包含文件显示它。这个PHP包含文件的代码如下:
<?PHP
echo"<div id='$i'>Loading the video player ...</div>
<script type='text/javascript'>
jwplayer('$i').setup({
flashplayer: 'player.swf',
image: '$imagePath',
skin: 'images/slim.zip',
width: 250,
height: 141,
plugins: {
gapro: { accountid: 'UA-30548455-1'}
},
file: '$videoPath'
});
</script>";
?>
上述文件适用于主页最初加载时显示的视频内容,但是,如果是通过附加和 loadMore加载的话。 php 页面它不会显示视频播放器的上述javascript。
我发现您似乎无法使用追加附加包含<script> </script>
的内容
标记,因为</script>
标记会导致追加停止或关闭。我尝试了各种解决方案,包括使用<\/script>
关闭脚本标记,但是,即使这似乎也不起作用。
如果有人可以提供一些见解或可能的方式,我可以使用追加来获取视频播放器的<script></script>
标签,这将是很棒的!
您好jwatts,所以这是我的代码,包括您推荐的广告代码:
$(function(){
var $container = $('#container');
$container.imagesLoaded(function(){
$container.masonry({
itemSelector: '.box',
columnWidth: 295,
isAnimated: !Modernizr.csstransitions,
isFitWidth: true
});
});
$container.infinitescroll({
navSelector : '#page-nav', // selector for the paged navigation
nextSelector : '#page-nav a', // selector for the NEXT link (to page 2)
itemSelector : '.box', // selector for all items you'll retrieve
loading: {
finishedMsg: 'No more pages to load.',
img: 'http://i.imgur.com/6RMhx.gif'
}
},
// trigger Masonry as a callback
function( newElements ) {
// hide new items while they are loading
var $newElems = $( newElements ).css({ opacity: 0 });
// ensure that images load before adding to masonry layout
$newElems.imagesLoaded(function(){
// show elems now they're ready
$newElems.animate({ opacity: 1 });
$container.masonry( 'appended', $newElems, true );
alert("test");
//Find Image and Video Paths from Div tags
$($newElems).find("div.content-container").each( function() {
var imgpath = $(this).find("div.content-imgpath").text();
var vidpath = $(this).find("div.content-vidpath").text();
var id = $(this).find("div.content-id").attr("id");
loadPlayer( id, imgPath, vidPath );
});
alert("test 2");
//Hide Paths
/*
div.content-imgpath, div.content-vidpath {
display: none;
}
*/
});
}
);
});
在我打电话给砌砖之后,我添加了你推荐的代码,但是当测试的第一个警告有效时似乎有些麻烦,但是第二个测试2 似乎不起作用。此外,我还推荐了隐藏图像和视频路径的代码,因为出于某种原因它似乎阻止了通过loadMore.php加载额外的conent。
我错过了哪些想法?我还在主页顶部为JWVideo播放器添加了 loadPlayer javascript函数。
答案 0 :(得分:0)
也许在加载jwplayer的主页面上创建一个函数
function loadPlayer(id, imgPath, vidPath) {
jwplayer(id).setup({
flashplayer: 'player.swf',
image: imgPath,
skin: 'images/slim.zip',
width: 250,
height: 141,
plugins: {
gapro: { accountid: 'UA-30548455-1'}
},
file: vidPath
});
}
像这样返回HTML:
<div class="content-container">
<div class="content-imgpath">path name here</div>
<div class="content-vidpath">vid path here</div>
<div class="content-id" id='$i'>Loading the video player ...</div>
</div>
确保隐藏图像路径和视频路径:
div.content-imgpath, div.content-vidpath {
display: none;
}
致电masonry
后,请执行以下操作:
$($newElems).find("div.content-container").each( function() {
var imgpath = $(this).find("div.content-imgpath").text();
var vidpath = $(this).find("div.content-vidpath").text();
var id = $(this).find("div.content-id").attr("id");
loadPlayer( id, imgpath, vidpath );
});
更新:修正了上面的变量名......