腳本可以被精簡下來,只是這一點,就沒有必要重複相同的功能,每一個元素和插槽,可以使用在each()
代替。也沒有必要改變各元素的ID,你可以只使用相同的ID在CSS:
$(init);
function init() {
$('.element').css('cursor', 'move');
$('.element').each(function() {
$(this).data('number', $(this).attr('id').replace('element_', '')).draggable({
containment: '#content',
stack: '#elements div',
cursor: 'hand',
revert: true
});
});
// Create the element slots
$('#slots').find('div').each(function() {
$(this).data('number', $(this).attr('id').replace('slot_', '')).droppable({
accept: '#elements div',
hoverClass: 'hovered',
drop: handleElementDrop
});
});
}
function handleElementDrop(event, ui) {
var slotNumber = $(this).data('number');
var elementNumber = ui.draggable.data('number');
if (slotNumber == elementNumber) {
$(this).droppable('disable');
ui.draggable.parent().find('.info').addClass('correct');
ui.draggable.css('cursor', 'pointer')
.addClass('correct')
.draggable('disable')
.position({
of: $(this),
my: 'left top',
at: 'left top'
})
.on('click', function() {
window.open(ui.draggable.attr('data-link'));
});
ui.draggable.draggable('option', 'revert', false);
}
}
在handleElementDrop
功能,您CAD添加單擊事件處理程序,當用戶把正確的元素右側插槽然後將火點擊它。
jsfiddle
要重現該問題拖放'隔離virus'先插槽,如果你點擊任何可拖動項目的新窗口將打開獲得是 – 2013-05-08 03:34:48