jQuery(window).load(function()打破脚本

时间:2015-03-30 14:58:40

标签: javascript jquery wordpress

我正在我正在处理的网站上实施Isotope但是我在加载脚本时遇到了一些问题,特别是在第一次访问时。

似乎我必须使用(window).load函数,但是如果我在.js文件中更改它会破坏sctript和功能。

下面的代码可以正常工作,除非它在第一次访问网站时没有加载。它还会导致Firefox中的一些布局问题

jQuery(function($) {

    var $container = $('#isotope-list'); //The ID for the list with all the blog     posts
    $container.isotope({ //Isotope options, 'item' matches the class in the PHP
        itemSelector: '.item',
        layoutMode: 'masonry'
    });

    //Add the class selected to the item that is clicked, and remove from the others
    var $optionSets = $('#filters'),
        $optionLinks = $optionSets.find('a');

    $optionLinks.click(function() {
        var $this = $(this);
        // don't proceed if already selected
        if ($this.hasClass('selected')) {
            return false;
        }
        var $optionSet = $this.parents('#filters');
        $optionSets.find('.selected').removeClass(
            'selected');
        $this.addClass('selected');

        //When an item is clicked, sort the items.
        var selector = $(this).attr('data-filter');
        $container.isotope({
            filter: selector
        });

        return false;
    });

});

如果我用下面的代码替换脚本的第一行,它会在第一次访问时加载,但过滤器功能会被破坏。

jQuery(window).load(function()

它可能很容易修复,但我的jQuery知识非常有限。任何帮助深表感谢。

PS:该网站使用WordPress,因此jQuery处于非冲突模式。

1 个答案:

答案 0 :(得分:0)

目前尚不清楚为什么你的代码需要在“load”事件处理程序中,但是你需要将它添加为函数的第一行:

 var $ = window.jQuery;

如果不这样做,所有对$的引用都会因为当它被用作“就绪”处理程序时传入代码而起作用,当它被用作“加载”处理程序时,它将被破坏。 p>