2 u013182001 u013182001 于 2014.12.15 18:26 提问

想在网页中加入一个瀑布流效果(jQuery),可是出现问题了
 $( window ).on( "load", function(){
    waterfall();
    var dataInt={'data':[{'src':'1.jpg'},{'src':'2.jpg'},{'src':'3.jpg'},{'src':'4.jpg'}]};
    window.onscroll=function(){
        if (checkScrollSlide()) {
            $.each(dataInt.data,function(index,value){
                var $oPin=$('<div>'),addClass('pin'),appendTo($('#viewlist'));
                var $oBox=$('<div>'),addClass('box'),appendTo($oPin);
                $('<img>').attr('src','<?php bloginfo('template_directory'); ?>/adimgs/' + $( value).attr( 'src') ).appendTo($oBox);
            });
            waterfall();
        };
    }
});

/*
    parend 父级id
    pin 元素id
*/
function waterfall(parent,pin){
    var $aPin = $( "#viewlist>div" );
    var iPinW = $aPin.eq( 0 ).width();// 一个块框pin的宽
    var num = Math.floor( $( window ).width() / iPinW );//每行中能容纳的pin个数【窗口宽度除以一个块框宽度】
    //oParent.style.cssText='width:'+iPinW*num+'px;ma rgin:0 auto;';//设置父级居中样式:定宽+自动水平外边距
    $( "#viewlist" ).css({
        'width:' : iPinW * num,
        'margin': '0 auto'
    });

    var pinHArr=[];//用于存储 每列中的所有块框相加的高度。

    $aPin.each( function( index, value ){
        var pinH = $aPin.eq( index ).height();
        if( index < num ){
            pinHArr[ index ] = pinH; //第一行中的num个块框pin 先添加进数组pinHArr
        }else{
            var minH = Math.min.apply( null, pinHArr );//数组pinHArr中的最小值minH
            var minHIndex = $.inArray( minH, pinHArr );
            $( value ).css({
                'position': 'absolute',
                'top': minH + 10,
                'left': $aPin.eq( minHIndex ).position().left
            });
            //数组 最小高元素的高 + 添加上的aPin[i]块框高
            pinHArr[ minHIndex ] += $aPin.eq( index ).height() + 15;//更新添加了块框后的列高
        }
    });
}

function checkScrollSlide(){
    var $aPin = $( "#viewlist>div" );
    var lastPinH = $aPin.last().get(0).offsetTop + Math.floor($aPin.last().height()/2);//创建【触发添加块框函数waterfall()】的高度:最后一个块框的距离网页顶部+自身高的一半(实现未滚到底就开始加载)
    var scrollTop = $( window ).scrollTop()//注意解决兼容性
    var documentH = $( document ).height();//页面高度
    return (lastPinH < scrollTop + documentH ) ? true : false;//到达指定高度后 返回true,触发waterfall()函数
}

Chrome 报错: Uncaught SyntaxError: Unexpected token ( 第7行

网页样式也没有出来

5个回答

showbo
showbo   Ds   Rxr 2014.12.15 20:36
已采纳

var $oPin=$('

'),addClass('pin'),appendTo($('#viewlist'));
var $oBox=$('
'),addClass('box'),appendTo($oPin);

逗号改为点

var $oPin=$('

').addClass('pin').appendTo($('#viewlist'));
var $oBox=$('
').addClass('box').appendTo($oPin);
showbo
showbo 回复u013182001: $('<img>').attr('src','<?php bloginfo('template_directory'); ?>/adimgs/' + $( value).attr( 'src') ).appendTo($oBox);你这个代码放到js文件还是script标签里面?放到js文件你的php代码不会执行会导致语法错误出错,要放到php页面的script标签里面
大约 3 年之前 回复
u013182001
u013182001 非常感谢,我按照您的提示修改过来了,但是新的问题又出现了:Uncaught SyntaxError: Unexpected identifier 第9行
大约 3 年之前 回复
save4me
save4me   Ds   Rxr 2014.12.15 23:11
    if (checkScrollSlide()) {
        $.each(dataInt.data,function(index,value){
            var $oPin=$('div').addClass('pin').appendTo($('#viewlist'));
            var $oBox=$('div').addClass('box').appendTo($oPin);
            $('img').attr('src','<?php bloginfo('template_directory'); ?>/adimgs/' + $( value).attr( 'src') ).appendTo($oBox);
        });
        waterfall();
    };
u013182001
u013182001 非常感谢,我按照您的提示修改过来了,但是新的问题又出现了:Uncaught SyntaxError: Unexpected identifier 第9行
大约 3 年之前 回复
u013182001
u013182001   2014.12.15 23:24

非常感谢,我按照您的提示修改过来了,但是新的问题又出现了:Uncaught SyntaxError: Unexpected identifier 第9行

u013182001
u013182001   2014.12.15 23:24

非常感谢,我按照您的提示修改过来了,但是新的问题又出现了:Uncaught SyntaxError: Unexpected identifier 第9行

save4me
save4me   Ds   Rxr 2014.12.16 09:09

下面的这句单引号里面不能也使用单引号,换成双引号
$('img').attr('src','<?php bloginfo("template_directory"); ?>/adimgs/' + $( value).attr( 'src') ).appendTo($oBox);

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!