【发布时间】:2015-08-20 15:02:35
【问题描述】:
考虑以下标记:
<a class="link" href="#">
<sup draggable="true">Foo</sup> Bar
</a>
现在将dragstart 事件附加到sup 元素:
$(document).ready(function () {
$("sup").on('dragstart', function(e) {
console.log('shikaka');
});
});
此事件永远不会触发。我一直在研究,在 Firefox 中,默认情况下链接是可拖动的,所以我认为这可能有效:
$(document).ready(function () {
$(".link").on('dragstart', function(e) {
e.preventDefault();
e.stopPropagation;
//event return false; does not work.
});
$("sup").on('dragstart', function(e) {
console.log('shikaka');
});
});
而且,<a class="link" href="#" draggable="false"> 也不起作用。
我什至尝试过一些“疯狂”的东西,比如向孩子触发事件:
$(".link").on('dragstart', function (e) {
e.preventDefault();
e.stopPropagation;
$(this).find('sup').trigger('dragstart');
});
互联网上有一些帖子表明您也可以通过取消mousedown 事件来禁用该事件。上面的任何例子都用dragenter 和mousedown 进行了尝试,都具有相同的效果。
我的问题是,有什么方法可以“短路”firefox 中的默认事件,以使其触发子元素的事件?或者,有什么方法可以只阻止父事件,但仍然可以拖动子元素?。
【问题讨论】:
标签: javascript jquery firefox draggable drag