| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Mar 2010
Beiträge: 2
|
Hallo leute! Ich bin neu hier in diesem Forum und hoffe ihr könnt mir helfen. Ich bin gerade dabei, mich in Javascript, bzw jQuery einzuarbeiten und habe schon eine Frage. Ich habe folgendes Problem. Ich habe einen DIV-Tree, der Checkboxen beinhaltet: HTML-Code: <style> div { width: 150px; background: #abc; border: 2px solid black; margin: 10px; </style> <div id="loka~"> <input type="checkbox" value="loka~stadt" id="stadt" />Stadt <div id="loka~stadt"> <input type="checkbox" value="loka~stadt~stadtteil" id="stadtteil"/>Stadtteil <div id="loka~stadt~stadtteil"> <input type="checkbox" value="loka~stadt~stadtteil~straße1" id="straße1" />Straße 1 <div id="loka~stadt~stadtteil~straße1"> <input type="checkbox" value="loka~stadt~stadtteil~straße1|1" id="obj_1" />Objekt 1<br /> <input type="checkbox" value="loka~stadt~stadtteil~straße1|2" id="obj_2" />Objekt 2<br /> <input type="checkbox" value="loka~stadt~stadtteil~straße1|3" id="obj_3" />Objekt 3<br /> </div> <input type="checkbox" value="loka~stadt~stadtteil~straße" id="straße2" />Straße 2 <div id="loka~stadt~stadtteil~straße2"> <input type="checkbox" value="loka~stadt~stadtteil~straße2|4" id="obj_4" />Objekt 4<br /> <input type="checkbox" value="loka~stadt~stadtteil~straße2|5" id="obj_5" />Objekt 5<br /> <input type="checkbox" value="loka~stadt~stadtteil~straße2|6" id="obj_6" />Objekt 6<br /> </div> </div> </div> Nehme ich nun z.B. "Objekt 1" aus der Selektion heraus, müssen "Straße 1", "Stadtteil" und "Stadt" auch deaktiviert werden. Die Frage ist nun, wie mache ich das in Parent-Richtung? Muss ich das irgendwie rekursiv machen? Gibt es eine smarte jQuery-Funktion, die ich übersehen habe oder hab ich einfach nur ein Brett vor dem Kopf? :-) Mein Javascript: Code: $(document).ready(function() {
$(':checkbox').click(function(event) {
// Behandlung aller Kindobjekte:
// Aktuelles Kind holen und alle beinhalteten
// Checkboxen setzen
var $actChd=$(this).next(); // Aktuelles Kind
var $actChdCb=$actChd.find(':checkbox');// Alle CBs im Kindobjekt
// Checkbox-Handling
if ( $(this).attr('checked') == true ) {
$actChdCb.attr('checked', true);
} else {
$actChdCb.attr('checked', false);
}
// Behandlung aller Vaterobjekte:
// Alle Vaterobjekte holen und beinahltete
// Checkboxen bei ALLEN gesetzten Child-CBs setzen
var $actPar=$(this).parent(); // Aktueller Parent
var $actParCb=$actPar.prev();// CB Aktueller Parent
parents($actParCb);
});
});
// Prüfung ob alle Kindobjekte gecheckt sind
function parents(actParCb) {
checked = true;
$actChdCb.each(function() {
if($(this).attr('checked') == false)
checked = false;
});
if (checked) {
$actParCb.attr('checked', true);
} else {
alert ("Nicht alle Kindelemente gecheckt!");
}
} Grüße MasterYoda Geändert von MasterYoda (29-03-2010 um 19:42 Uhr) |
| | |
| | #2 (permalink) |
| Inventar Registriert seit: Jul 2002
Beiträge: 6.882
| Code: $(document).ready( function(){
$(':checkbox').click( function(event) {
if( $(this).attr('checked') !== true ){
$(this).parents().each( function(i){
$(this).children(':checkbox').first().attr('checked', false);
});
$(this).next().find(':checkbox').attr('checked', false);
}else{ //Wenn noch nicht selektiert, selektiere alle Kinder und Eltern
$(this).parents().each( function(i){
$(this).children(':checkbox').first().attr('checked', true);
});
$(this).next().find(':checkbox').attr('checked', true);
}
});
});
__________________ (\__/) (='.'=) (")_(") |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Mar 2010
Beiträge: 2
|
Oh sehr interessant. :-) Das geht schon fast in die Richtung, danke sehr! ![]() Ich probiere mit dem Beispiel noch ein wenig rum, eigentlich möchte ich es so haben, dass wirklich alle Elemente eines Teilbaumes gecheckt werden müssen, damit der ParentNode auch checked ist. Sprich: - Straße1 wird erst gecheckt, wenn Objekt 1,2 und 3 true sind. - Stadtteil erst, wenn Straße1 und Straße2, sowie Objekte 1,2,3,4,5 und 6 true sind. - Wenn alle Stadtteile true sind, dann ist auch die Stadt true usw... Momentan werden schon alle Parents gechecked, wenn man beispielsweise nur Objekt 1 anklickt. jQuery ist ja echt eine coole Sache, muss da unbedingt schnell lernen! :-) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Jquery und CSS | michey | HTML und CSS | 5 | 24-03-2010 08:19 |
| Angezeigte Tree Items auslesen bzw. auf Tree Item über Index zugreifen (Drag & Drop) | Cookie Monster | Flex programmieren | 1 | 14-02-2009 08:53 |
| jQuery animate | derkrebs | JavaScript & jQuery | 2 | 01-05-2008 12:40 |
| Problem mit jQuery | derkrebs | JavaScript & jQuery | 3 | 21-04-2008 16:35 |
| [jQuery] Problemchen | Nicmare | JavaScript & jQuery | 1 | 19-12-2007 12:55 |