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

时间:2013-09-21 02:44:42

标签: javascript jquery

现在,当在多个选择器

上应用动画效果时
$('.foo,.bar').animate({width: '250'}, 'slow',function(){
    console.log($(this));
});

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

那么如何才能根据此.foo创建其他事件。

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

我需要根据(this) .foo

的位置做其他事件

2 个答案:

答案 0 :(得分:6)

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

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

一般来说,与你想要的东西(第一种方法)完全相同的东西是最好的,但这取决于你究竟想要做什么。

见:

答案 1 :(得分:2)

使用.filter()

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

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