编辑:问题是我使用了.select()而不是.find();
我有这个简单的jquery代码(jsfiddle:http://jsfiddle.net/periklis/znstj/)
<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>
为什么“绿色”总是在“红色”之前打印? (以及如何更改此项以使“红色”出现在“绿色”之前?)
一如既往,先谢谢大家!
答案 0 :(得分:2)
正如所写,你的.select()
调用是一个无操作 - 在jQuery中它用于注册onselect
事件的处理程序!
由于.select()
是一个链接函数,它返回调用它的原始对象,结果是您将第一个click
处理程序绑定到外部.someclass
div。
你所看到的是 bubbling 的影响,点击首先按下按钮(“绿色”),然后按顺序冒泡到其父级(“红色”)
如果.select()
调用的意图是将第一个点击处理程序绑定到按钮,那么您应该使用.children('.myclass')
代替。
答案 1 :(得分:0)
您可以绑定自己的自定义函数:
$('.myclass').click(function(){
$(this).trigger('green');
$(this).trigger('red');
})
$('.myclass').bind('green', function(e) {
console.log('green');
});
...
但是,bind
已被弃用,而有利于.on()
- &gt; http://api.jquery.com/on/