这是来自在线商店页面的代码的一部分。 php代码加载完整的目录,之后jquery点击相应的链接并过滤目录。
我在页面上有两个jqueries,它们都可以工作,但是
<script>
$(document).on('click', '.side-menu-categories li', function () {
var click = $(this).attr('data-filter');
$('.product-box').hide();
$('.product-box').each(function () {
if ($(this).attr('data-filter') == click || click == 0) {
$(this).fadeIn('fast');
}
});
});
</script>
这部分工作正常,我对此没有任何问题,但是当我尝试在窗口加载时调用它时它没有工作
$(window).load(function () {
$('#loader_spin').hide();
$('#product_container').show();
var clicked = false;
var filter_catalog = <?php echo(isset($_GET['id']) ? $_GET['id'] : 0); ?>;
$('.side-menu-categories li').each(function () {
if ($(this).attr('data-filter') == filter_catalog) {
$(this).click();
var clicked = true;
}
});
if (clicked == false) {
$('.side-menu-categories li[data-filter="0"]').click();
}
});
答案 0 :(得分:0)
使用var clicked = true;
,您将新变量定义到each()
函数的本地范围,因此删除var
(即只执行clicked = true
)以使用在中定义的全局变量上面的load()
范围:
$(window).load(function () {
$('#loader_spin').hide();
$('#product_container').show();
var clicked = false;
var filter_catalog = <?php echo(isset($_GET['id']) ? $_GET['id'] : 0); ?>;
$('.side-menu-categories li').each(function () {
if ($(this).attr('data-filter') == filter_catalog) {
$(this).click();
clicked = true; //don't declare it locally
}
});
if (clicked == false) {
$('.side-menu-categories li[data-filter="0"]').click();
}
});