【问题标题】:jQuery: select a single element with same class name without repeating code?jQuery:选择具有相同类名的单个元素而不重复代码?
【发布时间】:2019-01-04 22:55:52
【问题描述】:

我目前有一个 javascript 函数,可以在悬停时模糊图像。这些图像中的每一个都代表一个项目,我有 5 个此类项目的“个人项目”类。单个项目 div 中的 img 具有“project-img”类。

$('.individual-project').eq(0).hover(function() {
    $('.project-img').eq(0).css({'filter': 'blur(3px)', 'transform': 'scale(1.1, 1.1)', '-webkit-filter': 'blur(3px)', '-webkit-transform': 'scale(1.1, 1.1)', '-moz-filter': 'blur(3px)', '-moz-transform': 'scale(1.1, 1.1)'});
}, function() {
    $('.project-img').eq(0).css({'filter': 'blur(0px) brightness(100%)'});
});

目前我需要重复此块 5 次,并更改每个项目的 eq 函数内的值以使其模糊而不模糊所有其他项目。让选择器为具有相同类的单个 div 工作的任何帮助都会很棒。谢谢。

【问题讨论】:

  • .individual-projects 有孩子吗?
  • @CertainPerformance 是的,我应该指定。每个 .individual-project 都是一个 div,里面有 .project-img 和一个

  • 在您的问题中发布您的代码运行的 HTML 会很有帮助。
  • @CertainPerformance 我很抱歉。幸运的是,下面 SamVK 的解决方案奏效了。如果你还想让我添加html,我会的。

标签: javascript jquery html css jquery-selectors


【解决方案1】:

如果你只想影响每个项目中的项目图像,你想使用上下文查找。

$('.individual-project').hover(function(e) {
  $('.project-img', e.target).css({
    'filter': 'blur(3px)',
    'transform': 'scale(1.1, 1.1)',
    '-webkit-filter': 'blur(3px)',
    '-webkit-transform': 'scale(1.1, 1.1)',
    '-moz-filter': 'blur(3px)',
    '-moz-transform': 'scale(1.1, 1.1)'
  });
}, function(e) {
  $('.project-img', e.target).css({
    'filter': 'blur(0px) brightness(100%)'
  });
});

您可以选择赋予$() 方法的第二个参数是搜索匹配项的上下文。 $(selector)$(selector, document) 相同。提供第二个参数会覆盖默认上下文。

参考。 http://api.jquery.com/jQuery/#jQuery1

【讨论】:

  • 你不能只做$('.project-img', this)吗?
  • 如果你没有使用箭头函数,当然。
猜你喜欢
  • 2017-09-22
  • 1970-01-01
  • 2017-05-12
  • 1970-01-01
  • 2012-06-26
  • 2013-12-13
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
相关资源
最近更新 更多