繁体   English   中英

jQuery 绑定事件序列

[英]jQuery bind event sequence

编辑:问题是我使用.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>

为什么“绿色”总是在“红色”之前打印? (我将如何更改它以使“红色”出现在“绿色”之前?)

如所写,您的.select()调用是空操作 - 在 jQuery 中,它用于为onselect事件注册处理程序!

由于.select()是一个链接 function,返回调用它的原始 object,结果是您已将第一个click处理程序绑定到外部.someclass div。

因此,您看到的是冒泡的效果,点击首先点击按钮(“绿色”),然后按此顺序向上冒泡到其父级(“红色”)。

如果您调用.select()的目的是将第一个点击处理程序绑定到按钮,那么您应该使用.children('.myclass')来代替。

您可以绑定自己的自定义函数:

$('.myclass').click(function(){ 
      $(this).trigger('green');
      $(this).trigger('red');
   })

$('.myclass').bind('green', function(e) {
   console.log('green');
});

...

但是,不推荐使用bind ,取而代之的是.on() -> http://api.jquery.com/on/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM