这是一个在Jquery drag and drop - click event registers on drop上发布的后续问题
我使用的是jquery拖放。可拖动元素包含两个嵌套的div,分别浮动在left和right上。左侧div包含可拖动对象上的文本,右侧div包含切换工具提示的小“info”按钮。
在拖放时,我希望包含可拖动对象文本的左侧嵌套div是可单击的。drop由以下函数处理:
function handleElementDrop( event, ui ) {
var slotNumber = $(this).data( 'number' );
var elementNumber = ui.draggable.data( 'number' );
if ( slotNumber == elementNumber ) {
ui.draggable.css( 'cursor', 'pointer' );
ui.draggable.parent().find('.element_left').click(function(e) {
window.open(ui.draggable.attr('data-link'));
});
ui.draggable.parent().find('.info').addClass('correct');
ui.draggable.addClass( 'correct' );
ui.draggable.draggable( 'disable' );
$(this).droppable( 'disable' );
ui.draggable.position( { of: $(this), my: 'left top', at: 'left top' } );
ui.draggable.draggable( 'option', 'revert', false );
}
}现在,这里有:
ui.draggable.parent().find('.element_left').click(function(e) {
window.open(ui.draggable.attr('data-link'));
});适用于可单击的左侧嵌套div OK,但我在上一个问题中发布的问题似乎仍然存在。也就是说,在删除时,会激发click事件。这种情况偶尔会发生……我在http://jsfiddle.net/5wcaQ/上有点事。
发布于 2013-05-08 12:26:26
i不是.element_left元素,它是其中的info元素。
此外,行为也可能与我们在另一个单击事件处理程序中注册单击事件处理程序的事实有关。尝试将事件注册放到setTimout中,看看它是否得到了修复
setTimeout(function(){
ui.draggable.find('.element_left').click(function(e) {
window.open(ui.draggable.attr('data-link'));
});
});演示:Fiddle
https://stackoverflow.com/questions/16432605
复制相似问题