2013-05-22 4 views
3

Вот мой код. Я добавил несколько классов и удалил некоторые из его функций. CSS хорошо отражает дизайн, но когда я хочу использовать классы, которые я добавил к этой функции, jQuery не получает этого. Как я могу использовать функцию live или 'on'? Как я могу получить доступ к этим классам, чтобы снова использовать их в функции droppable?jQuery live draggable/live droppable?

$(".droppable").droppable({ 
    drop: function(event, ui) { 
     $(this).removeClass('droppable'); 
     $(this).removeClass('ui-droppable'); 

     var dragIMG = '<img class="dragBox ui-draggable" data-type="'+img+'" src="img/'+img+'.jpg" alt="" style="position: relative;"/>'; 
     $(this).append(dragIMG); 
     $('#box'+box).empty(); 
     $('#box'+box).addClass('droppable'); 
     $('#box'+box).addClass('ui-droppable'); 
    } 
}); 

ответ

4

Вы не можете, насколько я знаю, делегировать плагин таким же образом, что вы можете делегировать обработчик событий. Селектор выбирает элементы, которые совпадают в момент его выполнения, затем запускается код плагина для выполнения любой инициализации этих элементов. Любые новые элементы, которые будут соответствовать селектору в более поздней точке, не будут иметь код инициализации, вызываемый на них.

Вам нужно будет снова вызвать функцию плагина. Нечто подобное должно работать:

var droppableOptions = { 
    drop: function (event, ui) { 
     $(this).removeClass('droppable'); 
     $(this).removeClass('ui-droppable'); 

     var dragIMG = '<img class="dragBox ui-draggable" data-type="' + img + '" src="img/' + img + '.jpg" alt="" style="position: relative;"/>'; 
     $(this).append(dragIMG); 
     $('#box' + box).empty().addClass('droppable').addClass('ui-droppable').droppable(droppableOptions); 
    } 
} 

$('.droppable').droppable(droppableOptions); 
+0

спасибо брат ..: D теперь работает ... –

-2

Или вы можете использовать плагин под названием livequery (https://github.com/brandonaaron/livequery) и вызовите dragable-функцию.

Пример

$('a') 
.livequery('click', function(event) { 
    alert('clicked'); 
    return false; 
}); 
+0

Из документации он выглядит, что * бы * быть вариантом для достижения своей цели, но пример вы» опубликованное вами вообще не имеет отношения, поскольку это не имеет никакого отношения к обработчикам событий (также почему вы не просто используете '.on()'?). –

+0

Jeah, это просто пример со страницы! Итак, вот почему я написал Пример ... – elasticman

+1

Написание «Пример» не делает его более релевантным. Это использование плагина * не решит их проблему *. Это, я подозреваю, это то, почему вы получили понижение. –