我的网站上有一个用PHP创建的模板化元素。它出现在我网站的许多页面上。模板中有一个具有 hidden
类的span
。单击元素中的button
时,它会从span
中删除hidden
类。它在第一页上效果很好,但问题是,一旦从span
中删除类,它就会渗透到使用该模板的所有页面中。有没有办法在刷新页面时替换隐藏类?
这是一个WordPress网站,我可以提供任何相关的代码片段。javascript非常简单,只需在按钮上单击jQuery单击触发器即可删除隐藏类,并且页面标记非常简单。
以下是 PHP 模板部分的要点:
https://gist.github.com/weaverhe/7d8dec4a522a12478289(此代码只是包含在带有 PHP 的相应模板文件中)
还有javascript:
相关片段:
// Show the filter bar on button click
function showFilters() {
$('#toggle-filters').on('click', function(e) {
if($('div.filters').hasClass('hidden')) {
e.preventDefault();
$('div.filters').removeClass('hidden');
$(this).removeClass('grey').text('Apply Filters');
$('#remove-filters').removeClass('hidden');
$('#chosen-tag-holder span.active').removeClass('hidden');
}
else {
return true;
}
});
}
删除隐藏类的#chosen-tag-holder
选择器是页面重置时应该重置的内容。
全过滤器栏 JS:https://gist.github.com/weaverhe/05e05e45dbbcc9f10f47
allFilters();
函数在每个页面上运行,document.ready
应该是清除javascript更改,听起来您的问题在其他地方。需要查看javascript片段才能理解你在做什么。
否则,建议检查您是否清除了浏览器缓存,并且在测试时禁用了任何wordpress缓存。
在页面之间导航时,是否正在重新加载父窗口?如果您有多个窗口对象,这可能是您的问题。
理解正确,您希望在单击元素中的按钮后在所有页面上永久删除隐藏类,无论用户是刷新页面还是选择网站上的其他页面?使用Javascript在客户端无法实现这一点,您需要修改php代码。
根据您是希望在将来的所有会话中删除隐藏类,还是只删除此特定用户的此会话,您需要执行以下操作之一:
1) 在会话的其余部分删除。设置 $_SESSION 超全局,并在该用户每次刷新/更改页面时读取其值,并相应地回显相应的 html。
另请参阅:
http://php.net/manual/en/reserved.variables.session.php
在 php 中页面重定向后会话丢失
2) 为该特定用户永久删除。在用户数据库中保存一个布尔值(tinyInt),在应用模板之前读取该值,指示该用户是否(曾经)单击过该按钮,然后呈现相应的html。
在所有情况下,您都需要像这样修改模板:
<?php
"your condition" ?
echo <div class="hidden filters row overflow-visible"> :
echo <div class="filters row overflow-visible">;
?>