Javascript 单击时禁用父事件,但允许子事件维护自己的事件
我有大的上传表单,用户可以在这里拖放图片。但当图像被加载时,我会显示按钮,点击按钮会链接到某个页面。但该元素没有加载下一页,而是打开文件选择窗口(其父默认行为) 所以我在检查,如果事件有类,如果它是真的,我使用Javascript 单击时禁用父事件,但允许子事件维护自己的事件,javascript,jquery,preventdefault,stoppropagation,Javascript,Jquery,Preventdefault,Stoppropagation,我有大的上传表单,用户可以在这里拖放图片。但当图像被加载时,我会显示按钮,点击按钮会链接到某个页面。但该元素没有加载下一页,而是打开文件选择窗口(其父默认行为) 所以我在检查,如果事件有类,如果它是真的,我使用e.preventDefault() 这样做效果更好(我没有点击链接时的图像选择窗口,但这个链接也不起作用-每个事件都被禁用)我的问题是,我现在如何启用链接 // jFiler is a parent - upload form, with event - on click it open
e.preventDefault()
这样做效果更好(我没有点击链接时的图像选择窗口,但这个链接也不起作用-每个事件都被禁用)我的问题是,我现在如何启用链接
// jFiler is a parent - upload form, with event - on click it opens window for file choose - like input field.
$(document).on('click', '.jFiler', function(e) {
if ($(event.target).hasClass("jFiler-input-done-btn")) {
e.stopPropagation();
e.preventDefault();
}
});
$('.jFiler-input-done-btn').on('click',function(e) {
// Test works, but this is a link, and it cannot link to another page now...
alert ('test')
});
在父级
单击事件中,使用e.stopPropagation()
和e.preventDefault()
中断链接执行。您只需在那里返回true
$(document).on('click', '.jFiler', function(e) {
if( $(event.target).hasClass("jFiler-input-done-btn") ) {
return true;
}
});
只需重定向到已附加的click事件中的其他页面:
$('.jFiler-input-done-btn').on('click',function(e) {
windows.location.href = $(this).attr('href');
});
//OR also
$('.jFiler-input-done-btn').on('click',function(e) {
e.stopPropagation();
});
希望这有帮助。只需使用e.stopPropagation()代码>不需要e.preventDefault()代码>。因为它会阻止链接操作。警报('test')
到达??我不太理解问题,也不太理解什么有效,什么无效。您能为我们提供有关测试的更多信息吗?警报('test')已到达..jFiler单击打开上载窗口:。在内部我已放置元素('.jFiler input done btn)-单击此元素时,应链接到另一个页面,但单击时,将触发父元素(打开窗口以选择要上载的文件)-单击此按钮时,应链接到另一个页面,而不是打开窗口进行上载。其工作原理类似于e.stopPropagation();,但正如我在上面所评论的,它现在可以工作了(链接转到另一个页面),但是上传和选择窗口会持续1秒。看起来像是触发了父事件,但链接也起作用,所以我只在加载新页面时才看到此窗口。您能否向我们显示整个$(文档)。在('click','.jFiler',函数(e){})代码>函数?是的,我知道重定向,但它是更大的应用程序的一部分,在最好的情况下,这应该由纯html完成。但谢谢你的好主意。这是可能的,这段代码解决了问题吗?对我来说很好,现在点击按钮,父事件不会被触发…?$('.jFiler输入完成btn')。点击('click',函数(e){e.stopPropagation();});是的,这是真的代码>链接的内部单击事件。jFiler input done btn
也应该起作用。