当有多个选择器时处理 $(this)

Dealing with $(this) when there are multiple selector

本文关键字:this 处理 选择器      更新时间:2023-09-26

现在,当在多个选择器上应用了类似动画的效果时

$('.foo,.bar').animate({width: '250'}, 'slow',function(){
    console.log($(this));
});

控制台日志返回两次.foo.bar

那么我怎样才能仅基于此.foo制作其他事件。

像这样的事情$(this)+'.foo' <<这是

错误的

我需要根据(此).foo的位置执行其他事件

$('.foo')做一个单独的选择器,或者用filter('.foo')过滤现有的选择器。这些最好在早期将动画/事件绑定到正确的元素集上。

或者在动画回调中检查是$(this).is('.foo')还是$(this).hasClass('foo')。如果您的动画/事件已经绑定,但您需要弄清楚它们被触发在哪种 DOM 元素上,则此方法是最好的。

一般来说,完全按照你想要的方式绑定东西(第一种方法)是最好的,但这取决于你到底想做什么。

看:

  • http://api.jquery.com/filter/
  • http://api.jquery.com/is/
  • http://api.jquery.com/hasClass/

使用.filter()

$(this).filter('.foo').dosomething()

如果this.goo元素,则$(this).filter('.foo')不会返回任何内容,因此之后的操作不会影响.goo元素