2012-01-21 3 views
2

Теперь я знаю, что вы, ребята, думали, когда читали заголовок. Ваше вероятное мышление, что я говорю о jQuery UI, можно перетаскивать. Но я действительно говорю о плагине, который я делаю для сообщества. Я пытаюсь создать цель для своего плагина. Он работает, как вы можете увидеть здесь:Создание перетаскиваемого элемента на цель

http://jsfiddle.net/XvZLn/24/

Как вы можете видеть, что это работает отлично.

Во-первых, позвольте мне объяснить, что произойдет. Ну, что я хочу, это если элемент отбрасывается в цель ... запускается target.on(). Это функция onTarget в моем плагине. Это и offTarget (targ.off()) не работают в моем плагине.

Это то, что я имею в своем плагине:

var targ = { 
          on: o.target.onTarget, 
          off: o.target.offTarget 
         }; 

Тогда мой код плагина установка:

$(document).ready(function() { 
    $('#drag').jDrag({ 
     revert: false, 
     revertDuration: 500, 
     ghostDrop: false, 
     ghostRevert: false, 
     ghostOpacity: '0.50', 
     instantGhost: false, 
     activeClass: false, 
     handle: false, 
     grid: false, 
     cookies: false, 
     cookieExdate: 365, 
     radialDrag: false, 
     radius: 100, 
     circularOutline: false, 
     strictMovement: false, 
     distance: 0, 
     not: false, 
     containment: false, 
     target: { 
      init: '#container', 
      lock: false, 
      onTarget: function() { 
       $(this).hide(); 
      }, 
      offTarget: function() {} 
     }, 
     onPickUp: function() {}, 
     onDrop: function() {} 
    }); 
}); 

Я не понимаю, почему это не будет работать.

Это мой на самом деле плагин, если вы хотите взглянуть на него:

http://jsfiddle.net/ZDUZL/89/

+1

К сожалению, чей плагин это? – mowwwalker

+0

Mine, iv'e работал над этим с прошлого года, и я просто не могу решить эту проблему! – Shawn31313

ответ

2

Try:

onTarget: function() { 
       console.log(this); 
       $(this).hide(); 
      }, 

Вы увидите, что «это» не относится к элемент, а скорее объект, который содержит эту функцию.

Пропустите элемент в качестве аргумента:

if (locker === false) { 
    if (statement) { 
     targ.on(this); 
     lock = false; 
    } else { 
     targ.off(); 
     lock = false; 
    } 
} 

http://jsfiddle.net/ZDUZL/91/

+0

Удивительный чувак! Я не могу вас поблагодарить. Я пытался решить эту проблему в течение нескольких недель без успеха. – Shawn31313

+0

@ Shawn31313, проблем нет. Хорошая работа, выглядит много хорошего и отличается от этого маленького перегиба, похоже, работает. – mowwwalker

+0

Да, это так. Теперь я могу продолжать исправлять небольшие ошибки, когда эта ошибка не работает. – Shawn31313