2013-05-08 2 views
1

Этого прослеживания вопроса отвечал на Jquery drag and drop - click event registers on dropJquery перетаскивание - установить интерактивную область в перетаскиваемом на каплях

Я использую JQuery перетаскивание. Перетаскиваемые элементы содержат два вложенных divs, расположенных слева и справа. Левый div содержит текст перетаскиваемого, а правый div содержит небольшую кнопку «info», которая переключает всплывающую подсказку.

При отбрасывании я хочу, чтобы левый вложенный div, содержащий текст перетаскиваемого, можно было щелкнуть. Перепад обрабатываются следующей функцией:

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')); 
    }); 

Работы для щелчков левого вложенного сНа правильны, но вопрос, который я отвечал в моем последнем вопросе, как представляется, остается , То есть, при удалении происходит событие щелчка. Это происходит очень спорадический ... У меня есть скрипка в http://jsfiddle.net/5wcaQ/

ответ

1

i не .element_left элемента это info элемента внутри него.

Также поведение может быть связано с тем фактом, что мы регистрируем обработчик события клика внутри другого обработчика событий кликов. Попробуйте поместить регистрацию событий в setTimout и посмотреть, будет ли он получать фиксированный

setTimeout(function(){ 
    ui.draggable.find('.element_left').click(function(e) { 
     window.open(ui.draggable.attr('data-link')); 
    }); 
}); 

Demo: Fiddle

+0

Нет ... element_right ДИВ содержит якорный тег с классом информации. Это кнопка информации, которая используется только для показа всплывающей подсказки, а не для открытия ссылки на данные для элемента ... это делается нажатием element_left. – IlludiumPu36

+0

@PeterBrowne проверить обновление –

+0

Да, я попробовал ui.draggable.find ('. Element_left'). Click (function (e) {тоже и по-прежнему имеет событие клика, которое иногда срабатывает. Я попробовал вашу скрипку выше и сделал первый 3 слота, а затем последний слот, и событие было запущено в последнем слоте ... – IlludiumPu36

Смежные вопросы