jQuery Uncaught TypeError:object不是函数。 WordPress $对象冲突?

时间:2014-08-03 15:53:59

标签: jquery wordpress

通过在函数结构中传入$运算符,我认为我应该清楚地在代码中使用$。但是,它反而抛出“对象不是函数”错误。我有什么想法吗?

enter image description here

以下完整代码:

<script>
function isElementVisible($elementToBeChecked)
{
        var TopView = $(window).scrollTop();
        var BotView = TopView + $(window).height();
        var TopElement = $elementToBeChecked.offset().top;
        var BotElement = TopElement + $elementToBeChecked.height();
        return ((BotElement <= BotView) && (TopElement >= TopView));
}

jQuery(window).scroll(function($) {
        $( ".counter" ).each(function() {
                $this = $(this);
                isOnView = isElementVisible($(this));
                if(isOnView && !$(this).hasClass('Starting')){
                        $(this).addClass('Starting');
                        startTimer($(this));
                }
        });
});

function startTimer($this) {
        setTimeout(function(){
                $this.html($this.html() - 1);
                startTimer($this);
        }, 1000); 
}
</script>

1 个答案:

答案 0 :(得分:2)

你正在使用多个地方的元数据,如果存在冲突,为什么会在那里定义?

您应该做的是将所有代码包装在Wordpress的推荐DOM ready处理程序

<script>

    jQuery(function($) {
        function isElementVisible($elementToBeChecked) {
                var TopView = $(window).scrollTop();
                var BotView = TopView + $(window).height();
                var TopElement = $elementToBeChecked.offset().top;
                var BotElement = TopElement + $elementToBeChecked.height();
                return ((BotElement <= BotView) && (TopElement >= TopView));
        }

        $(window).scroll(function() {
                $( ".counter" ).each(function() {
                        $this = $(this);
                        isOnView = isElementVisible($(this));
                        if(isOnView && !$(this).hasClass('Starting')){
                                $(this).addClass('Starting');
                                startTimer($(this));
                        }
                });
        });

        function startTimer($this) {
                setTimeout(function(){
                        $this.html($this.html() - 1);
                        startTimer($this);
                }, 1000); 
        }
    });

</script>