jQuery在悬停时暂停滚动div

时间:2014-02-04 18:47:37

标签: jquery wordpress

我正在使用wordpress插件将帖子滚动到无限。 当我悬停在帖子上时,我希望滚动停止。  我尝试使用

<script>
jQuery(document).ready(function($) {

    $('.spe_div').hover(function()
        {
            spe_scrollOn='false';
        },function()
        {
            spe_scrollOn='true';
            spe_content();
        }
    );

});
</script>

我使用的插件名称是wordpress scroll excerpt插件。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,这就是我想要暂停上班的时候,我还花时间纠正滚动效果在它顶部时的“打嗝”或口吃滚动(会跳几个像素并且看起来不平滑)。

更改为scroll-post-excerpt.php:

第72行:

变化

$dis_num_height = $dis_num_height + 4;

$dis_num_height = $dis_num_height;

(这解决了口吃,基本上改变是从行尾删除+ 4)

在第97行插入一个新行,添加以下代码:

var spe_Pause = false;

将此代码插入spe_createscroll()函数,我将其插入第104行

// Add Hover detection for pausing
jQuery(spe_obj).hover(function(){spe_Pause = true;}, function(){spe_Pause = false;});

此文件的最后一次编辑是为了确保在此脚本文件之前加载了jQuery,为此我修改了wp_enqueue_script代码(现在在第198行):

wp_enqueue_script( 'scroll-post-excerpt', get_option('siteurl').'/wp-content/plugins/scroll-post-excerpt/scroll-post-excerpt.js',array( 'jquery' ));

(注意在函数array( 'jquery')末尾传递的附加参数,这是导致脚本等待的原因。

对scroll-post-excerpt.js的更改:

我最终对函数spe_scroll()进行了一些更改,修改后的代码为:

function spe_scroll() {
    if(spe_Pause == true) {
        setTimeout("spe_scroll()",15);
        return;
    }
    spe_obj.scrollTop = spe_obj.scrollTop + 1;
    spe_scrollPos++;
    //if ((spe_scrollPos%spe_heightOfElm) == 0) {
    if (spe_obj.scrollTop == spe_heightOfElm) {
        spe_scrollPos = 0;
        spe_numScrolls--;
        if (spe_numScrolls == 0) {
            spe_obj.scrollTop = '0';
            spe_content();
        } else {
            if (spe_scrollOn == 'true') {
                spe_content();
            }
        }
    } else {
        setTimeout("spe_scroll();", 15);
    }
}

为了打破它,我先插入

if(spe_Pause == true) {
        setTimeout("spe_scroll()",15);
        return;
    }

这将检查在第一个文件的修改中添加的悬停参数,并执行早期功能退出并重置以检查用户何时搬出。

然后我修改了if()语句,没有看到模数方法的需要,所以我修改它来测试元素的当前scrollTop

if (spe_obj.scrollTop == spe_heightOfElm) {

(如果您愿意,可以使用spe_scrollPos变量。)

在if()语句中我添加了一行来重置spe_scrollPos变量的值,

spe_scrollPos = 0;

因为这只是一直在计算和恕我直言,不是一个好主意,因为它只会继续消耗内存。

我还通过将超时值更改为15来修改滚动速度,以及您想要的速度。

希望有所帮助!