我正在我正在处理的网站上实施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处于非冲突模式。
答案 0 :(得分:0)
目前尚不清楚为什么你的代码需要在“load”事件处理程序中,但是你需要将它添加为函数的第一行:
var $ = window.jQuery;
如果不这样做,所有对$
的引用都会因为当它被用作“就绪”处理程序时传入代码而起作用,当它被用作“加载”处理程序时,它将被破坏。 p>