以jQuery中的特定页面/模板为目标

时间:2018-04-19 作者:Berr

我有一个带有固定顶栏的网站,上面显示着特定的徽标。我在jQuery中使用以下脚本在滚动若干像素后显示/隐藏徽标:

<script>
jQuery(document).scroll(function() {
var y = jQuery(this).scrollTop();
if (y > 63) {
  jQuery(\'.top-bar-logo\').fadeIn();
} else {
  jQuery(\'.top-bar-logo\').css({
\'display\': \'none\'
});
}
}); 
</script>
上述脚本运行良好,但它适用于网站中的每个页面。因此,我现在要做的是为特定的页面/模板自定义此脚本。例如,我希望以jQuery中的“归档”模板为目标,并为其编写自定义脚本。我该怎么做?

我是Wordpress开发新手,非常感谢您的帮助。谢谢

1 个回复
SO网友:noahmason

方法1使用body类。所有模板都将有一个表示它们的类。ie:body.archive, body.single, body.home, 等等。它甚至会有特定的税务/职务类型类,以便进行更精细的控制。用检查body类的东西包装js函数。下面应该可以做到这一点:

jQuery

if ( $( \'body\' ).first().hasClass( \'archive\' ) ) {...}

Plain JS

const body = document.querySelector(\'body\');
if ( body.classList.contains(\'archive\') ) {...}
Note: 可以通过body_class 过滤器,以及body_class() 功能必须在身体元素上。

Function (make sure this is on your body element):

body\\u class()| Function | WordPress开发人员资源https://developer.wordpress.org/reference/functions/body_class/

Filter (Use this to manipulate):

body\\u class | Hook | WordPress开发人员资源https://developer.wordpress.org/reference/hooks/body_class/

方法2您还可以在php中以该模板为目标,并将wp_enqueue_script 对于此文件(只要这是此文件中的全部内容,并且您不需要其他内容),请在条件中进行检查,即:is_archive(), is_single(), is_home().

If you bundle your assets, use the first approach.

结束

相关推荐

如何在$(Window).on(‘Load’)之后触发jQuery

我有一个使用elementor page builder构建的WordPress页面,在该页面中,我使用名为响应式动画书的插件显示“动画书”(pdf查看器)。动画书由javascript函数响应,每当浏览器窗口调整大小时,动画书都会自动调整大小(我不知道为什么,但这不是我的插件)。问题是这些书以最小的大小呈现,插件会激发jQuery(window).trigger(\'rfbwp.resize\'); 加载页面时,触发调整大小以使其适合当前窗口。然而,这似乎在某些浏览器上不起作用(至少在我的mac上的sa