现在,当在多个选择器上应用动画之类的效果时
$('.foo,.bar').animate({width: '250'}, 'slow',function(){
console.log($(this));
});
.foo
控制台日志返回两次.bar
那么我如何才能仅基于此进行其他事件.foo
。
像这样的$(this)+'.foo'
<<这是错误的
我需要根据(this)的位置进行其他活动 .foo
现在,当在多个选择器上应用动画之类的效果时
$('.foo,.bar').animate({width: '250'}, 'slow',function(){
console.log($(this));
});
.foo
控制台日志返回两次.bar
那么我如何才能仅基于此进行其他事件.foo
。
像这样的$(this)+'.foo'
<<这是错误的
我需要根据(this)的位置进行其他活动 .foo
为 做一个单独的选择器$('.foo')
,或者用 过滤现有的选择器filter('.foo')
。在早期,最好将动画/事件绑定到正确的元素集。
或者在动画回调中检查$(this).is('.foo')
是否$(this).hasClass('foo')
. 如果您的动画/事件已经绑定,但您需要弄清楚它们被触发的 DOM 元素类型,这种方法将是最好的。
一般来说,完全按照你想要的方式绑定东西(第一种方法)是最好的,但这取决于你到底想要做什么。
看:
利用.filter()
$(this).filter('.foo').dosomething()
如果this
是一个.goo
元素,则$(this).filter('.foo')
不会返回任何内容,因此之后的操作不会影响.goo
元素