2010-05-07 4 views
2

Я изменил приложение приложения для диспетчера образцов.вопрос о jQuery droppable/draggable

photo manager application

Вместо фотографий, у меня есть записи сотрудников, поступающих из запроса. Моя версия позволит менеджерам отмечать сотрудников как в отпуске, так и на работе. Одна из вещей, которую я сделал, - включить идентификаторы сотрудников, такие как <a href="123">. Я получаю идентификаторы из event.target. Это работает для функции щелчка, но не для функции «droppable». Это то, что у меня есть для функции щелчка:

$('ul.gallery > li').click(function(ev) { 
    var $item = $(this); 
var $unid = ev.target; 
var $target = $(ev.target); 
if ($target.is('a.ui-icon-suitcase')) { 
deleteImage($item,$unid); 
} else if ($target.is('a.ui-icon-arrowreturnthick-1-w')) { 
recycleImage($item,$unid); 
} 
return false; 

});

ev.target правильно указывает идентификатор сотрудника.

, когда я попробовать то же самое в одном из небьющихся функций:

$gallery.droppable({ 
accept: '#suitcase li', 
activeClass: 'custom-state-active', 
drop: function(ev, ui) { 
var $unid = ev.target; 
alert($unid); 
recycleImage(ui.draggable,$unid); 
} 

});

предупреждение (ui) дает мне [объект]. Что в этом объекте? Как мне получить href?

благодаря

ответ

1

В jQuery UI droppable документации это показывает, что она предоставляет дополнительные объекты JQuery:

* ui.draggable - current draggable element, a jQuery object. 
* ui.helper - current draggable helper, a jQuery object 
* ui.position - current position of the draggable helper { top: , left: } 
* ui.offset - current absolute position of the draggable helper { top: , left: } 

Таким образом, изменение следующего кода должно работать:

$gallery.droppable({ 
accept: '#suitcase li', 
activeClass: 'custom-state-active', 
drop: function(ev, ui) { 
    var $unid = ui.draggable.attr('id'); 
    alert($unid); 
    recycleImage(ui.draggable, $unid); 
} 
}); 
0

Я думал, что это решило мою проблему:

drop: function(ev, ui) { 
    var $unid = $(ui.draggable).attr('id'); 
    recycleImage(ui.draggable,$unid); 
    } 

, если я использую это:

var $unid = ui.draggable.find('id'); 

тогда я получить [объект Object]

также, я должен был изменить:

 $('ul.gallery > li').click(function(ev) { 
      var $item = $(this); 
      var $unid = $(this).attr('id'); 
      var $target = $(ev.target); 
      if ($target.is('a.ui-icon-suitcase')) { 
       deleteImage($item,$unid); 
      } else if ($target.is('a.ui-icon-arrowreturnthick-1-w')) { 
       recycleImage($item,$unid); 
      } 
      return false; 
     }); 

работает как шарм :)

+0

Извините, я допустил ошибку в своем коде ... вместо ', find ('id')' он должен был быть ' .attr ('ID') '. Я думал, что нам нужно найти тег '' внутри объекта draggable, но потом я заметил, что вы не указали HTML. Во всяком случае, я рад, что ты получил свой ответ :) – Mottie

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