Javascript 尝试使用jQuery更改Wordpress粘性徽标图像src

Javascript 尝试使用jQuery更改Wordpress粘性徽标图像src,javascript,jquery,sticky,Javascript,Jquery,Sticky,我在wordpress上,我想在标题变粘时更改默认徽标: 类是粘性的,这很重要 (我还在使用小插件进行音译——西里尔语到拉丁语,同时我可以根据当前字母表更改粘性徽标,因为body有classbody.cir或body.lat如果是西里尔语/拉丁语) css目标很好,例如: body.lat .is-sticky img.kad-standard-logo{ border: solid 1px red; } body.cir .is-sticky img.kad-standard-logo{

我在wordpress上,我想在标题变粘时更改默认徽标:
是粘性的,这很重要

(我还在使用小插件进行音译——西里尔语到拉丁语,同时我可以根据当前字母表更改粘性徽标,因为
body
有class
body.cir
body.lat
如果是西里尔语/拉丁语)

css目标很好,例如:

body.lat .is-sticky img.kad-standard-logo{
   border: solid 1px red;
}
body.cir .is-sticky img.kad-standard-logo{
   border: solid 1px blue;
}
.is-sticky img.kad-standard-logo{
   border: solid 1px red;
}
或者更准确地说,
(不要与我的字母表类混淆)
。是粘性的吗?
类显示在页面滚动上,然后我想更改徽标

添加边框,例如:

body.lat .is-sticky img.kad-standard-logo{
   border: solid 1px red;
}
body.cir .is-sticky img.kad-standard-logo{
   border: solid 1px blue;
}
.is-sticky img.kad-standard-logo{
   border: solid 1px red;
}
没关系

我不想使用:

content: url(logo.png)
background: url(logo.png)
我正试图像这样更改徽标,但不起作用:

jQuery(function($) {

   var cyril = "https://mysite.domain/images/logo_sticky-cir.png";
   var lats ="https://mysite.domain/images/logo_sticky-lat.png" ;
   var logoDefault = $('.kad-standard-logo').attr('src'); //Wordpress theme options default logo

   $('body.cir .is-sticky img.kad-standard-logo').attr('src', cyril);
   $('body.lat .is-sticky img.kad-standard-logo').attr('src', lats);
});
可能类
.is sticky
存在一些冲突,因为它来自sticky header的主脚本或其他内容,并且何时从脚本中排除:

$('body.cir img.kad-standard-logo').attr('src', cyril);
$('body.lat img.kad-standard-logo').attr('src', lats);
或者只是

$('img.kad-standard-logo').attr('src', lats);
它起作用了

但我需要的是
是粘性的

我希望这个描述是可以理解的

有什么建议吗


谢谢。

这个JS是在pageload上执行的,因为您使用的是
jQuery(function(){})
表单,它实际上会一直等到
DOMContentLoaded
事件被触发。基本上,只有当您加载页面时img已经粘滞时,此代码才会更改某些内容。它不是,所以没有什么可以改变的。这就是为什么当你把
放在粘性的
上时,它会工作的原因

要实现您想要的功能,您需要侦听类更改,或者绑定自定义事件并触发它:

我个人建议使用容器和CSS
背景图像
来实现这一点,无论如何,这会更快、更高性能。您可以随意使用CSS sugar,比如
过渡:背景图像0.2s,轻松使用
,这样更改就不会出现波动。我强烈建议使用这种方法,而不是使用昂贵的JS加载页面

例:


嘿,OP,欢迎来到SO。你能给我一个什么样的标志元素看起来像一个例子,甚至只是发送网站,让我们可以有一个例子工作了?你写的代码表面上看起来还不错,我看不出有什么明显的错误。好的,这里有链接,这个网站只是为了测试,当然感谢@Christian的欢迎!克里斯蒂安,谢谢你澄清这一点。当然,它可以通过css来实现,我只是在探索可能性并学习JS。我有另一个代码可以很好地工作,但是我提供的这个代码对我来说似乎有点“优雅”@arteaster是的,不幸的是,没有(建议的)方法告诉jQuery,“嘿,注意这个元素,如果元素是Y,就执行X”。CSS将允许您这样做,我强烈建议您采用这种方法。