Lar*_*ert 12 javascript jquery
在jQuery中处理click事件时遇到了一些奇怪的行为.
看看这个小提琴
$('#button').click(function() {
$(document).one('click', function() {
alert('clicked');
});
});
Run Code Online (Sandbox Code Playgroud)
此代码将click-event-handler绑定到某个按钮.单击此链接时,应在文档中添加事件处理程序,并在下次单击文档时发出"单击"警报.
但是当点击此按钮时,"点击"会立即收到警报而无需再次点击.显然,将新处理程序绑定到文档的click-event会冒泡到文档并立即运行刚刚分配的hndler.
这种行为似乎非常违反直觉.我的目的是在点击按钮时显示一个元素,并在点击该元素外部时再次隐藏它.
$('#button').click(function() {
// Show some element
$(document).one('click', function() {
// Hide the element again
});
});
Run Code Online (Sandbox Code Playgroud)
但这会导致元素立即隐藏.
有没有人有这个问题的解决方案?
Kev*_*sox 16
可以防止事件向上传播DOM.
$('#button').click(function(e) {
e.stopPropagation();
$(document).one('click', function(e) {
alert('clicked');
});
});
Run Code Online (Sandbox Code Playgroud)
JS小提琴: http ://jsfiddle.net/7ymJX/6/
| 归档时间: |
|
| 查看次数: |
10522 次 |
| 最近记录: |