Ένα πολύ απλό script αλλά δεν ξέρω γιατί δεν δουλεύει...

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Ένα πολύ απλό script αλλά δεν ξέρω γιατί δεν δουλεύει...

Δημοσίευση από majuranus » 05 Μαρ 2010 10:02

Γεια σας,

Έχω ένα div και θέλω να το μετακινήσω 300px πιο αριστερά όταν κάποιος κάνει κλικ πάνω του

Επέλεξα να το κάνω χρησιμοποιώντας jquery για να γίνει και με κίνηση

έχω τα εξής:

$("#menuf").click(function() { $('#menuf').animate({'left': '+=320px'}, 'slow');} );

και μέσα στην σελίδα μου έχω ένα <div id="menuf">

όταν πατάω όμως πάνω στο div αυτό μένει ακίνητο λες και πείσμωσε...

μήπως μπορεί να δώσει κανείς λύση??


έχω δηλώσει στο head την βιβλιοθήκη jquery
Τελευταία επεξεργασία από το μέλος majuranus την 05 Μαρ 2010 11:24, έχει επεξεργασθεί 1 φορά συνολικά.

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Ένα πολύ απλό script αλλά δεν ξέρω γιατί δεν δουλεύει...

Δημοσίευση από nbc » 05 Μαρ 2010 10:22

Το menuf πρέπει να είναι positioned για να "ακούσει" το left.

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Ένα πολύ απλό script αλλά δεν ξέρω γιατί δεν δουλεύει...

Δημοσίευση από majuranus » 05 Μαρ 2010 10:23

einai to exo dilosei absolute kai tou edosa left kai top times.

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Ένα πολύ απλό script αλλά δεν ξέρω γιατί δεν δουλεύει...

Δημοσίευση από nbc » 05 Μαρ 2010 10:26

Τότε, σηκώνω ψηλά τα χέρια. Ο κώδικας που έχεις είναι σωστός. Μήπως δεν παίζει ο handler? Βάλε 'να alert να βεβαιωθείς. Δοκίμασε και με relative.

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Ένα πολύ απλό script αλλά δεν ξέρω γιατί δεν δουλεύει...

Δημοσίευση από majuranus » 05 Μαρ 2010 10:31

position:absolute;
left:-320px;
top:0px;
background:url(../images/menu.jpg) center left no-repeat #FFF ;
width:350px;
height:1024px;
z-index:1000;
min-height:750px;
max-height:100%;
filter:alpha(opacity=70);
-moz-opacity:0.7;
-khtml-opacity: 0.7;
opacity: 0.7;

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Ένα πολύ απλό script αλλά δεν ξέρω γιατί δεν δουλεύει...

Δημοσίευση από majuranus » 05 Μαρ 2010 10:33

Ουτε το alert παίζει δυστυχώς στο συγκεκριμένο handler

στο document.ready όμως παίζει και το menuf πηγαίνει αριστερα.. πραγματικά μυστήριο...

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Ένα πολύ απλό script αλλά δεν ξέρω γιατί δεν δουλεύει...

Δημοσίευση από nbc » 05 Μαρ 2010 10:38

Άρα, έχεις κάποιον άλλο handler που κάνει capture το click χωρίς bubbling. Κάνε ένα σκανάρισμα :D

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Ένα πολύ απλό script αλλά δεν ξέρω γιατί δεν δουλεύει...

Δημοσίευση από majuranus » 05 Μαρ 2010 10:43

Αυτό είναι το περίεργο. Η γραμμή που γράφω πάνω είναι η μοναδική jscript εντολή που υπάρχει :)

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Ένα πολύ απλό script αλλά δεν ξέρω γιατί δεν δουλεύει...

Δημοσίευση από nbc » 05 Μαρ 2010 10:48

Κάτσε, γιατί δε λέει να τρελλαθούμε... Είπες πως στο document ready παίζει. Άρα, που δεν παίζει?

Βρε μπας και παίζεις με Explorer? Αυτός σε οτιδήποτε έχει να κάνει με positioning και dimensions θέλει το χρόνο του. Ο Explorer δεν υπολογίζει "άμα τη εμφανίσει".

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Ένα πολύ απλό script αλλά δεν ξέρω γιατί δεν δουλεύει...

Δημοσίευση από majuranus » 05 Μαρ 2010 10:53

οοοχχιιιι, σου παραθετω ακριβως τον κώδικα μαζι με το css να δεις το αξιοπερίεργο του θεματος..

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jq ... "></script>
<script type="text/javascript" >
$("#menuf").click(
function()
{
$("#menuf").animate({"left": "+=320px"}, "slow");
}
);

</script>
<style type="text/css">
#menuf
{

position:absolute;
left:-320px;
top:0px;
background:url(../images/menu.jpg) center left no-repeat #FFF ;
width:350px;
height:1024px;
z-index:1000;
min-height:750px;
max-height:100%;
filter:alpha(opacity=70);
-moz-opacity:0.7;
-khtml-opacity: 0.7;
opacity: 0.7;

}
</style>
<title>TP - Photograher</title>
<meta name="description" content="Photography wedding batism travel" />
</head>
<body>
<div id="menuf">

<ul>
<li>
gallery
<ul>
<li>wedding</li>
<li>baptism</li>
<li>travel</li>
</ul>
</li>
<li>the philosophy</li>
<li>contact</li>
<li>info</li>
<li>links</li>
</ul>
</div>

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Ένα πολύ απλό script αλλά δεν ξέρω γιατί δεν δουλεύει...

Δημοσίευση από nbc » 05 Μαρ 2010 10:59

Ε, λογικό είναι αδελφέ. Αναφέρεσαι σε element που δεν υπάρχει! Πως θα κάνει bind η κακομοίρα σε κάτι που αγνοεί?

- ή θα τυλίξεις τον κώδικα σε document ready
- ή θα τον βάλεις μετά το markup
- ή θα χρησιμοποιήσεις live event

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Ένα πολύ απλό script αλλά δεν ξέρω γιατί δεν δουλεύει...

Δημοσίευση από majuranus » 05 Μαρ 2010 11:02

Χμ... επειδή ντεν ξέρει..

το δείχνεις σε παρακαλώ με ένα παράδειγμα???

εννοείς αυτο που έχω να το κλείσω σε document.ready?? (αυτό το πιασα!)

to markup πιο είναι??? :S (αυτό δεν το πιασα)

το live event?? (πως γίνεται αυτό)

το δοκιμάζω με τον πρώτο τρόπο!

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Ένα πολύ απλό script αλλά δεν ξέρω γιατί δεν δουλεύει...

Δημοσίευση από nbc » 05 Μαρ 2010 11:16

Ok, sorry...

Το scriptάκι σου εκτελείται τη στιγμή που φορτώνεται, με τη σειρά - δηλαδή - που εμφανίζεται στον κώδικα που παρέθεσες.

Ζητάς από τη jQuery να κάνει bind το menuf. Τη συγκεκριμένη χρονική στιγμή, όμως, menuf δεν υπάρχει! Εμφανίζεται παρακάτω. Συνεπώς, η jQuery δεν κάνει bind γιατί δεν βρίσκει το menuf. Αυτό δεν θεωρείται σφάλμα γι αυτό και δεν σου χτυπάει το firebug.

Η σύνταξη jQuery(function($){...}); (αυτό που λέμε document ready) δεν κάνει τίποτε άλλο από το να εκτελεί τον κώδικά σου μόνον και μόνον αφού το DOM έχει φορτώσει. Τότε, το menuf υφίσταται, και τότε μπορεί να γίνει bind.

- Όταν σου λέω μετά το markup, εννοώ ότι βάζεις το $("#menuf").click(...) μετά την html που ακολουθεί (στον πάτο), δηλαδή όταν το menuf είναι πλέον γνωστό. Εκεί, θα παίξει.

- Όταν λέω live event, εννοώ το binding να γίνει μέσω της live() εντολής της jQuery. Πάλι θα παίξει καθώς η live εκτελείται κάθε φορά που δημιουργείται dom node. Άρα, όταν δημιουργηθεί το menuf θα πιαστεί στη φάκα.

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Ένα πολύ απλό script αλλά δεν ξέρω γιατί δεν δουλεύει...

Δημοσίευση από majuranus » 05 Μαρ 2010 11:19

aaaaaaaaaaaaaaaaaaa

Ώραια με βοήθησες πάρα πολύ
δεν ήξερα ότι τηρήται τέτοιου είδους σειρά (λογικό είναι βέβαια..)
το έκλεισα σε document.ready α το αφήσω έτσι προτείνεις η να βάλω το script κάτω

πάντως δουλεύει τώρα...

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Ένα πολύ απλό script αλλά δεν ξέρω γιατί δεν δουλεύει...

Δημοσίευση από korgr » 05 Μαρ 2010 11:20

nbc έγραψε:Ok, sorry...

Το scriptάκι σου εκτελείται τη στιγμή που φορτώνεται, με τη σειρά - δηλαδή - που εμφανίζεται στον κώδικα που παρέθεσες.

Ζητάς από τη jQuery να κάνει bind το menuf. Τη συγκεκριμένη χρονική στιγμή, όμως, menuf δεν υπάρχει! Εμφανίζεται παρακάτω. Συνεπώς, η jQuery δεν κάνει bind γιατί δεν βρίσκει το menuf. Αυτό δεν θεωρείται σφάλμα γι αυτό και δεν σου χτυπάει το firebug.

Η σύνταξη jQuery(function($){...}); (αυτό που λέμε document ready) δεν κάνει τίποτε άλλο από το να εκτελεί τον κώδικά σου μόνον και μόνον αφού το DOM έχει φορτώσει. Τότε, το menuf υφίσταται, και τότε μπορεί να γίνει bind.

- Όταν σου λέω μετά το markup, εννοώ ότι βάζεις το $("#menuf").click(...) μετά την html που ακολουθεί (στον πάτο), δηλαδή όταν το menuf είναι πλέον γνωστό. Εκεί, θα παίξει.

- Όταν λέω live event, εννοώ το binding να γίνει μέσω της live() εντολής της jQuery. Πάλι θα παίξει καθώς η live εκτελείται κάθε φορά που δημιουργείται dom node. Άρα, όταν δημιουργηθεί το menuf θα πιαστεί στη φάκα.
Απολαυστικη περιγραφη! :victory:

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 2 επισκέπτες