2017-01-03 221 views
1

你好,我试图使用jQuery的HTML拖放功能。我生成我拖动(按钮)这样ondragstart在触发器中不触发

$("#tb > tbody > tr").append(($("<td>")).append($("<input/>", {type:"button", id:"bt", draggable:"true", value:"test", class:"bt-test"}))).append($("</td>")); 

,到目前为止,关于这个问题的阅读了一下后,我试图对付不同的事件是这样的:

$(document).on("dragstart", ".bt-test", function(evt) 
{ 
    evt.originalEvent.dataTransfer.setData("text", $(this).val()); 
    alert(evt.originalEvent.dataTransfer.getData("text")); 
    evt.originalEvent.preventDefault(); 
}); 
$(document).on('dragenter', function(evt){evt.originalEvent.preventDefault();}); 
$(document).on('dragleave', function(evt){evt.originalEvent.preventDefault();}); 
$(document).on('dragover', function(evt){evt.originalEvent.preventDefault();}); 


// still irrelevant at this point 
$(document).on("drop", ".btCase", function(evt) 
{ 
    var data = evt.originalEvent.dataTransfer.getData("text"); 
    $(this).val(data); 
    event.originalEvent.preventDefault(); 
}); 

的dragstart监听器中的警报在chrome上显示得很好,但它不在Firefox上。

我已经尝试将ondragstart="dragstart_handler(event);"直接添加到我的按钮中,如https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API中提到的,但问题依然存在。我也尝试用return false();

替换event.originalEvent.preventDefault();任何提示?

编辑:小提琴>http://jsfiddle.net/Nn4x2/4/

+0

你能提供的jsfiddle或其他工作的例子吗? –

+0

这里你去http://jsfiddle.net/Nn4x2/4/ –

回答

0

这一方法在div元素,看到http://jsfiddle.net/Nn4x2/26/ 看来拖动输入按钮没有在Firefox支持。最好使用样式化的锚元素代替。

这被记录为Firefox的错误的按钮元素 - 见https://bugzilla.mozilla.org/show_bug.cgi?id=568313

+0

是的,我看到了;我只是好奇什么是不相容的。感谢您的链接。无论如何,我想我会使用锚点。谢谢 –

+0

不客气,祝你好运。 –