php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.01.2010, 00:17  
Erfahrener Benutzer
 
Registriert seit: 13.05.2006
Beiträge: 466
Curanai ist zur Zeit noch ein unbeschriebenes Blatt
Standard [Erledigt] jQuery: eigensinniges Drag'n'Drop

Hallo Admins, Member und simple Leser, wünsche allen ein frohes neues Jahr und komme jetzt schon zu meinem Anliegen, da ich euch nicht im Skype habe ... wahrscheinlich mal wieder eines der Bonbons, die schnell gelutscht sind ... ^^

Worum geht's?! Genau ... Drag'n'Drop via UI aus dem jQuery Baukasten - feine Sache ... eigentlich!! Wenn es da nicht immer so invidiuelle Wünsche geben würde ... versuche ich also mal eine Erklärung, die mir auf deutsch bestimmt besser gelingt als mit den anderen Möglichkeiten:

Ich habe einen draggable Droppable, der einen Draggable aufnehmen soll, welcher sich aber beim erneuten Draggen mitbewegen muss, wodurch eine Abhängigkeit vom neuen (!) Parent geschaffen werden müsste ...

Source im Kurzformat:

Code:
<div id="p1" class="movers"><div id="pp1" class="moverscontent"></div></div>
Obiges ist ein beweglicher #p1, der in #pp1 den gleich kommenden Draggable aufnehmen soll. Beide IDs bestehen nur aus Width/Height Angaben ... gänzlich unspektakulär! #p1 ist noch in einem "containment" verankert, um über einen äußeren Container nicht hinaus verschoben werden zu können.

Code:
<div id="demo" style="..." class="vodoo"></div>
Obiges ist der Draggable, der in #pp1 niedergelassen werden sollte ... kommen wir also zum Kern des Spaßes:

Code:
$('#p1').draggable({
		containment: '#mainview', // äußere Grenze; auch ein DIV
		scroll: false,
		opacity: 0.35,
		cursor: 'move',
		stop: function(event, ui){ 
			// report position
			//alert("x: " + ui.position['left'] + " | y: " + ui.position['top']);
		}
}).fadeTo("fast", 0.35);
	
$('#pp1').droppable({ 
		accept: '.vodoo',
		tolerance: 'touch',
		hoverClass: 'drophover',
		drop: function(event, ui){
			// report draggable-id for droppable???
		}
});
	
$("#demo").draggable({ 
		revert: 'invalid',
		snap: true,
		snapMode: 'inner',
		snapTolerance: 20
});
Das funktioniert eigentlich auch schon ganz ansehnlich (Toleranz von #demo ist noch zu gering). Nur leider komme ich nicht an den neuen Parent (nach dem Drop) von #demo heran - das müsste nämlich #pp1 sein, oder? Mein Plan war, diesen via 'option','containment','#pp1' für #demo zu binden ... das ging in die Hose. Demnach verweigert #demo auch das "Mitreisen", wenn #p1 verschoben wird ...

Wer sich nun fragt, warum ich mit #p1 und #pp1 arbeite, so liegt es an dem ausbleibenden Erfolgserlebnis, dass .droppable und .draggable direkt auf einer ID angewandt werden können - das klappte nämlich gar nicht.

Nun habe ich hier mit dem Forum schon sehr gute Erfahrungen gemacht. Ich hoffe, dass erneut jemand kurz meinen Plan überdenkt ... vielen Dank schon jetzt für Deine Zeit, die Du für das Lesen bis zu dieser Stelle gegeben hast.

Viele Grüße
Curanai
__________________
Manche Menschen sind wie Schnitzel - nicht zäh, aber beidseitig bekloppt!
Curanai ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.01.2010, 08:48  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.725
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

Ich habe probiert, die "gedropte" DOM-Node zu verschieben (von body nach #pp1). Scheint zu klappen, aber ich weiß nicht, wie elegant mein jQuery-Code dazu ist.

PS: Testbare Beispiele, für die man sich nur noch die externen Dateien (also etwa jQuery) beschaffen muss, wären ein Traum.

Code:
<link type="text/css" href="css/ui-lightness/jquery-ui-1.7.2.custom.css" rel="stylesheet" />
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.7.2.custom.min.js"></script>

<script type="text/javascript">
$(document).ready(function() {
    $('#p1').draggable({
        containment: '#mainview', // äußere Grenze; auch ein DIV
        scroll: false,
        opacity: 0.35,
        cursor: 'move',
        stop: function(event, ui) {
            // report position
            //alert("x: " + ui.position['left'] + " | y: " + ui.position['top']);
        }
    }).fadeTo("fast", 0.35);

    $('#pp1').droppable({
        accept: '.vodoo',
        tolerance: 'touch',
        hoverClass: 'drophover',
        drop: function(event, ui) {
            // DOM-Node passend verschieben
            var clone = $(event.originalTarget).clone();
            $(event.originalTarget).remove();
            
            clone.css({'left': '10px',
                       'top': '10px'});

            $(this).append(clone);
        }
    });

    $("#demo").draggable({
        revert: 'invalid',
        snap: true,
        snapMode: 'inner',
        snapTolerance: 20
    });
});
</script>

<style type="text/css">
#demo {
    background: #00f;
    width: 30px;
    height: 30px;
}
#p1 {
    width: 200px;
    height: 200px;
    background: #0f0;
}
#pp1 {
    width: 100px;
    height: 100px;
    background: #f00;
}
</style>

<div id="p1" class="movers">
    <div id="pp1" class="moverscontent"></div>
</div>

<div id="demo" class="vodoo"></div>
mermshaus ist offline   Mit Zitat antworten
Alt 03.01.2010, 11:57  
Erfahrener Benutzer
 
Registriert seit: 13.05.2006
Beiträge: 466
Curanai ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo mermshaus, erstmal vielen Dank - interessanter Ansatz. Beim ersten Kaffee kam ich selbst noch auf die Idee, dem DIV #demo die Drag-Möglichkeit zu entziehen, nachdem er platziert wurde, um ihn vielleicht direkt in #pp1 zu verankern, damit er wenigstens "mitfährt" ...

Bezüglich "testbare Beispiele": Ok, werde es bei weiteren Hilfegesuchen berücksichtigen.

Dann mal sehen, wie ihm das schmeckt ...


EDIT: ... das funktioniert nicht (ohne Error im Firebug). Das weitere Draggen entpuppt sich erneut als "instabil" - #demo bleibt zurück. Einzige Auffälligkeit: Im Style hat #pp1 einen (Kontroll-)Rahmen von 1px solid ... der ist nach dem Drop weg. Weiterhin habe ich jetzt mal kurz lesen müssen, was "event.originalTarget" macht - hier wird aber auf die explicit-Variante hingewiesen: "The explicitOriginalTarget is similar to the originalTarget property, but it always retrieves the exact target object while the originalTarget property sometimes returns the parent element of the exact target object." Mit "explicit" behalte ich zwar den eigentlich noch erwünschten Rahmen, doch verliere ich für alle Droppables die Drag-Fähigkeit ...

EDIT2: ... habe mir jetzt mal eine unabhängige Version gebaut - das funktioniert. Also vermute ich mal, dass irgendwo im Ansatz der Drag/Drop-Bildung ein Denkfehler zu sein scheint. Dein Demo läuft prima ... werde mal auf Ursachenforschung gehen, was ihn da stört! *bitte noch nicht als 'erledigt' setzen - werd noch Feedback geben!*
__________________
Manche Menschen sind wie Schnitzel - nicht zäh, aber beidseitig bekloppt!

Geändert von Curanai (03.01.2010 um 13:31 Uhr).
Curanai ist offline   Mit Zitat antworten
Alt 04.01.2010, 02:31  
Erfahrener Benutzer
 
Registriert seit: 13.05.2006
Beiträge: 466
Curanai ist zur Zeit noch ein unbeschriebenes Blatt
Standard

mermshaus, ... danke! Wo muss der 10er hin? (PayPal, pls; PM zu mir) ^^

Ich habe jetzt meinen Krempel umgestellt - mit dem Ergebnis, dass es letztendlich doch wohl nur ein zIndex gewesen ist, der diese Abhandlung unmöglich machte. Auch der Umstand, dass mir die ID, in die #demo eingebettet wird, mittels ...

Code:
$(this).attr('id')
... direkt im "drop" eines Droppable abgreifen kann, bringt mich meinem kleinen Ziel wieder ein Stück näher.

Fazit: Du hast mir sehr geholfen - vielen Dank!!

Weitere 10er auf Anfrage ... *lach* ...

Viele Grüße
"die Zahnfee" Curanai
__________________
Manche Menschen sind wie Schnitzel - nicht zäh, aber beidseitig bekloppt!
Curanai ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
jQuery Navigationsanimation khz JavaScript, Ajax und mehr 9 06.12.2009 02:34
jQuery Ablauf halskrause JavaScript, Ajax und mehr 8 24.11.2009 13:14
Scriptsuche JQuery Plugin für Bildergalarie Creator Scriptbörse 3 22.10.2009 12:27
[Erledigt] [Erledigt] jQuery Endlos Scrolling Umlaute kn0wledge JavaScript, Ajax und mehr 0 18.10.2009 19:29
jQuery Dokus/Tuts MaiKaY Off-Topic Diskussionen 9 25.09.2009 16:52
jQuery mit AJAX ohne ActiceX im IE? krush JavaScript, Ajax und mehr 2 11.08.2009 08:54
Umsetzung von parentNode in jQuery nikosch JavaScript, Ajax und mehr 8 03.08.2009 21:25
JQUERY - divs auf und zuklappen sturmi JavaScript, Ajax und mehr 5 04.06.2009 14:23
[Erledigt] jQuery Dateien nachladen Phoscur JavaScript, Ajax und mehr 7 14.03.2009 13:44
jQuery Plugin - so richtig? stayInside JavaScript, Ajax und mehr 5 23.02.2009 12:34
For Schleife mit jQuery phpbeginner JavaScript, Ajax und mehr 3 22.11.2008 22:35
Drag & Drop via JQuery & Ajax --> Geht nicht :( Plague JavaScript, Ajax und mehr 2 23.10.2008 12:19
Thickbox Funktionalität in jQuery Plague JavaScript, Ajax und mehr 1 28.07.2008 23:58
mit jQuery grosse Formulare verarbeiten phpbeginner HTML, Usability und Barrierefreiheit 5 13.06.2008 22:58
jQuery: Parameter an onclick Event ecomeback HTML, Usability und Barrierefreiheit 1 08.04.2008 11:23

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
jquery draggable position, jquery draggable, jquery drag n drop, jquery droppable position, jquery drag drop position, jquery draggable revert, jquery drag drop, jquery draggable demo, jquery draggable snap, jquery drop position, jquery droppable, jquery baukasten, jquery draggable grenzen, jquery ui sortable php, jquery drag drop demo, jquery droppable demo, jquery draggable clone, jquery draggable containment, jquery drag\'n\'drop, jquery drop snap

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:13 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum