今回のSortableクラスは,
SortableObserver
ドラッグの開始,
0576:var SortableObserver = Class.create({
0577: initialize: function(element, observer) {
0578: this.element = $(element);
0579: this.observer = observer;
0580: this.lastValue = Sortable.serialize(this.element);
0581: },
0582:
576~582行目のinitializeは,
580行目で,
0583: onStart: function() {
0584: this.lastValue = Sortable.serialize(this.element);
0585: },
0586:
583~586行目のonStart関数は,
0587: onEnd: function() {
0588: Sortable.unmark();
0589: if(this.lastValue != Sortable.serialize(this.element))
0590: this.observer(this.element)
0591: }
0592:});
0593:
587~593行目のonEnd関数は,
588行目のunmark関数は,
589行目で,
Sortable
0594:var Sortable = {
0595: SERIALIZE_RULE: /^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/,
0596:
0597: sortables: { },
0598:
595行目で,
597行目のsortablesは,
0599: _findRootElement: function(element) {
0600: while (element.tagName.toUpperCase() != "BODY") {
0601: if(element.id && Sortable.sortables[element.id]) return element;
0602: element = element.parentNode;
0603: }
0604: },
0605:
599~605行目の_findRootElementは,
0606: options: function(element) {
0607: element = Sortable._findRootElement($(element));
0608: if(!element) return;
0609: return Sortable.sortables[element.id];
0610: },
0611:
606~611行目のoptionsは,
0612: destroy: function(element){
0613: var s = Sortable.options(element);
0614:
0615: if(s) {
0616: Draggables.removeObserver(s.element);
0617: s.droppables.each(function(d){ Droppables.remove(d) });
0618: s.draggables.invoke('destroy');
0619:
0620: delete Sortable.sortables[s.element.id];
0621: }
0622: },
0623:
612~623行目のdestroyは,
616行目で,
617行目で,
618行目で,
620行目で,