繁体   English   中英

允许对目标事件执行默认操作,并针对父级阻止默认操作

[英]Allow default action for target event and prevent default action for parent

我们有这种标记:

<a href="#">
   <input type="file" />
</a>

默认情况下,当您单击输入时,将显示 “选择文件”窗口,并且位置更改为“#”。 如何防止浏览器更改位置?

我尝试过的

//location still changes
$('input').bind('click', function (e) {
  e.stopPropagation();
});

//prevents "Select file" window
$('input').bind('click', function (e) {
  e.preventDefault();
});

//prevents "Select file" window 
$('a').bind('click', function (e) {
  e.preventDefault();
});

尝试将$(e)更改$(e) e.

e.preventDefault();

在执行$(e).preventDefault()导致错误

Uncaught TypeError: Object [object Object] has no method 'preventDefault' 

您需要检查用户是否单击了a元素而不是输入文件。 这应该工作。

$('a').click(function(e) {
    if ($(e.target).is('a')) {
        e.preventDefault();
    }
});

DEMO

暂无
暂无

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

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