jQuery UI перетаскивает более близкие элементы - PullRequest
0 голосов
/ 22 января 2012

В настоящее время я использую jQuery UI для перетаскивания в моем приложении.Я использую его для создания игры, в которой вам нужно делать комбинации объектов (например, бутылка пива с зажигалкой)

Но в некоторых случаях предметы ближе, поэтому, если я перетаскиваю их,дескриптор события несколько раз ..

Есть ли способ заставить дескриптор просто произойти один раз?Или обнаружить только самый близкий объект при множественном наведении?

РЕДАКТИРОВАТЬ

Код:

$('#overlay-objet img').droppable({
    tolerance: 'touch',
    drop: _.bind(function(event, ui) {
        object = $(event.target);
        if (object.attr("data-val") != undefined){
            objectDrag = object.attr('data-val').toString();
            objectDrop = $(ui.draggable).attr('data-val').toString();
            object.addClass('hidden');
        $('#'+object.attr('data-toggle')).removeClass('hidden');
        this.dragDropEvent(objectDrag + objectDrop);
        }
    }, this),
    over: _.bind(function(event,ui){
        object = $(event.target);
    object.addClass('hidden');
        $('#'+object.attr('data-toggle')).removeClass('hidden');
    }, this),
    out: _.bind(function(event,ui){
        object = $(event.target);
    object.removeClass('hidden');
    $('#'+object.attr('data-toggle')).addClass('hidden');
    }, this) // Edit mercredi soir ajouter ,this dans chaque callback
});
$('img.big-objet').draggable({
    helper: "clone"
});

Я не говорил этого выше, ноm с использованием магистрали + requireJS + подчеркивание

1 Ответ

0 голосов
/ 22 января 2012

Без вашего кода мы едва сможем вам помочь.В любом случае, я могу догадаться, что там происходит.Вы, вероятно, не используете ключевое слово this в своей функции drop и не используете селектор запросов.Посмотрите на мой код здесь:

HTML

  <div class="draggable">Drag me</div>
  <div class="droppable">Drop Here</div>
  <div class="droppable">Drop Here</div>
  <div class="droppable">Drop Here</div> 
  <div class="droppable">Drop Here</div>

JS

$('.draggable').draggable({
  helper: 'clone'
});
$('.droppable').droppable({
  drop: function(e, ui){
    $(this).css('color', 'red');
  }
});

Это прекрасно работает.Посмотрите на страницу jsbin здесь .Но если я использую селектор вместо this, то падение может повлиять на все элементы, которые соответствуют селектору.Подумайте, если я напишу такой код:

$('.draggable').draggable({
  helper: 'clone'
});
$('.droppable').droppable({
  drop: function(e, ui){
    $('.droppable').css('color', 'red'); // selector instead of this
  }
});

Тогда он не будет работать как положено

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...