编辑:问题是我使用了.select()
而不是.find();
我有一个简单的jQuery代码(jsfiddle:(第10页)
<div class = "someclass"><button class = "myclass">clickme</button></div>
<script>
$(document).ready(function() {
$('.someclass').select('.myclass').bind('click', function() { console.log('red'); });
$('.myclass').bind('click', function() { console.log('green'); });
});
</script>
究竟为什么“绿色”总是打印在“红色”之前?(我该如何改变这一点,使“红色”出现在“绿色”之前?)
2条答案
按热度按时间aiqt4smr1#
正如所写的,您的
.select()
调用是一个no-op -injQuery,它用于注册onselect
事件的处理程序!由于
.select()
是一个链接函数,它返回调用它的原始对象,因此结果是您已经将第一个click
处理程序绑定到外部.someclass
div。因此,您看到的是 * 冒泡 * 的效果,单击首先点击按钮(“绿色”),然后冒泡到其父按钮(“红色”),按此顺序。
如果您调用
.select()
的目的是将第一个单击处理函数仅绑定到按钮,则应该使用.children('.myclass')
。f5emj3cl2#
您可以绑定自己自定义函数:
但是,不建议使用
bind
,而建议使用.on()
-〉http://api.jquery.com/on/