如何为具有相同样式值的元素设置监听器



我想为所有具有相同样式值的元素设置一个侦听器,以便可以在其style属性、.css文件或<header>样式标记中的任何位置设置它。经过大量搜索,我找到了这个代码:

$("body").on("click", '[style*="cursor:pointer"]', function (e) {
const ripple = new Ripple();
ripple.create(e, this.tagName.toLowerCase() == "a" ? 'dark' : 'light');
});

但它不起作用。我尝试了style~="pointer",但这也不起作用。JS和JQuery对我来说都很好。

注意:我发现了其他相关的问题,比如使用filter,所以不要告诉我它是重复的。在我的情况下,如果我想使用filter来查找带有.css()的元素,我的侦听器必须为页面中的所有元素设置,这是不符合逻辑和优化的。

不幸的是,您无法使用CSS选择器通过样式值轻松获取所有元素。这只适用于那些在stylehtml属性中直接设置了值的对象。

唯一的方法是如何通过你已经提到的JS来解决它。这就是filter函数,但你说得对,它根本没有效率。

但也许还有其他方法可以解决这个问题?因为实际上很少根据css值设置一些元素行为。更常见的方法是通过类名或标记名设置它。

所以我不知道上下文,但我会尝试以下方法之一:

  1. 如果您能够调整HTML,请将特定的类设置为您想要针对的所有元素
  2. 如果不能更改HTML,可以尝试创建一个具有多个通用属性(标记名、类名(的数组,以元素为目标,并在此基础上添加侦听器

最新更新