4

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

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

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

那么我如何才能仅基于此进行其他事件.foo

像这样的$(this)+'.foo'<<这是错误的

我需要根据(this)的位置进行其他活动 .foo

4

2 回答 2

6

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

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

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

看:

于 2013-09-21T02:46:58.200 回答
2

利用.filter()

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

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

于 2013-09-21T02:47:05.433 回答