Ik heb hier een TODO list grotendeels met JQuery gemaakt.
Elk todo regel bevat "de tekst van de todo" en daarna 3 buttons "voldaan", "bewerken" en "verwijderen"
De hiërarchie van 1 todo regel is als volgt verpakt:
Als ik op "Voldaan" klik, wil ik dat hij eerst een streep door de tekst zet en daarna de database update voor die specifieke todo.
Met de volgende code kan ik wel de lijn door de tekst toggelen, maar wil hij de $.get en Alert regel niet uitvoeren.
Als ik op edit klik, dan komt de todo tekst in een input veld te staan met daarachter een save/cancel button.
Het vreemde is dat de "Voldaan" toggle pas de $.get en alert regel uit voert als ik eerst een keer op edit heb geklikt.
De edit code is als volgt:
Samengevat: met de voldaan button kan ik enkel een lijn door de tekst aan en uit zetten, maar als ik daarvoor een keer een edit heb gedaan, dan pas doet hij lijn togglen EN de $.get en alert regel uitvoeren.
Het lijkt alsof container.append in de edit code iets triggert waardoor hij ineens wel alle code van de Voldaan button wilt uitvoeren
Elk todo regel bevat "de tekst van de todo" en daarna 3 buttons "voldaan", "bewerken" en "verwijderen"
De hiërarchie van 1 todo regel is als volgt verpakt:
code:
1
2
3
4
5
6
7
8
| <li id="todo-'.$this->data['id'].'" class="todo"> <div class="text">$this->data['text'])</div> <div class="actions"> <a href="#" class="done" title="Taak markeren als voldaan">Done</a> <a href="#" class="edit" title="Taak bewerken">Edit</a> <a href="#" class="delete" title="Taak verwijderen">Delete</a> </div> </li>' |
Als ik op "Voldaan" klik, wil ik dat hij eerst een streep door de tekst zet en daarna de database update voor die specifieke todo.
Met de volgende code kan ik wel de lijn door de tekst toggelen, maar wil hij de $.get en Alert regel niet uitvoeren.
code:
1
2
3
4
5
6
7
8
9
10
11
12
| // Listening for a click on a done button $('.todo a.done').live('click',function(){ //done code// if ( $(this).closest('.todo').find('.text').hasClass('donetext') ) { $(this).closest('.todo').find('.text').removeClass('donetext'); } else { $(this).closest('.todo').find('.text').addClass('donetext'); $.get("ajax.php",{'action':'done','id':currentTODO.data('id')}); alert("done was clicked"); } }); |
Als ik op edit klik, dan komt de todo tekst in een input veld te staan met daarachter een save/cancel button.
Het vreemde is dat de "Voldaan" toggle pas de $.get en alert regel uit voert als ik eerst een keer op edit heb geklikt.
De edit code is als volgt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| // Listening for a click on a edit button $('.todo a.edit').live('click',function(){ var container = currentTODO.find('.text'); if(!currentTODO.data('origText')) { // Saving the current value of the ToDo so we can // restore it later if the user discards the changes: currentTODO.data('origText',container.text()); } else { // This will block the edit button if the edit box is already open: return false; } if(container.text() != 'New Todo Item. Doubleclick to Edit.') { $('<input type="text" style="width:90%" MAXLENGTH="350" id="inputedit">').val(container.text()).appendTo(container.empty()); } else { $('<input type="text" style="width:90%" MAXLENGTH="350" id="inputedit">').val('').appendTo(container.empty()); } // Appending the save and cancel links: container.append( '<div class="editTodo">'+ '<a class="saveChanges" href="#" id="savebutton">Save</a> or <a class="discardChanges" href="#">Cancel</a>'+ '</div>' ); }); |
Samengevat: met de voldaan button kan ik enkel een lijn door de tekst aan en uit zetten, maar als ik daarvoor een keer een edit heb gedaan, dan pas doet hij lijn togglen EN de $.get en alert regel uitvoeren.
Het lijkt alsof container.append in de edit code iets triggert waardoor hij ineens wel alle code van de Voldaan button wilt uitvoeren