
Hallo zusammen!
Bastle gerade eine Seite, auf der in einer Box Kategorien verwaltet werden sollen (siehe Bildanhang).
Die schon vorhandenen Kategorien werden via AJAX und PHP aus einer mySQL-Datenbank geladen. Die Funktion dazu sieht so aus (ich weiß nicht genau, ob ich CODE oder PHP verwenden soll, aber bei PHP funktioniert wenigstens das Highlighting, also nehmts mir nicht übel, falls das falsch sein sollte):
PHP:
function GetCategories()
{
var url = './ajax/training_management_data.php';
$('#training_management_categories_items').html('<ul style="list-style: none; margin-left:0px; margin-top:0px; padding:0px;" id="training_management_categories_items_ul"></ul>');
$('#training_management_categories_items_ul').append(' \
<li class="training_management_categories_list"> \
<a href="" class="training_management_categories_list_a" id="training_management_categories_list_a_all">Alle</a> \
</li> \
');
$.ajax({
url: url,
type: "POST",
data: {
action: 'get_categories',
},
dataType: 'JSON',
success: function (data) {
$.each(data, function(index, data) {
$('#training_management_categories_items_ul').append(' \
<li class="training_management_categories_list"> \
<a href="" class="training_management_categories_list_a" data-id="'+data.id+'" id="training_management_categories_list_a_'+data.id+'">'+data.name+'</a> \
</li> \
');
});
}
});
}
Das funktioniert auch alles.
Ich habe eine Klasse ".categories_selected", die für die angeklickten Items verwendet wird, auch das funktioniert:
PHP:
$('#training_management_categories_items').on('click', '.training_management_categories_list_a', function (e) {
e.preventDefault();
categoryid = $(this).attr('id');
selectedcategoryid = $(this).attr('data-id');
selectedcategoryname = $(this).text();
$("#training_management_categories_items>ul>li>a").removeClass('categories_selected');
$(this).addClass('categories_selected');
//alert("ID: "+selectedcategoryid);
if (categoryid == training_management_categories_list_a_all) {
categorySelected = 0;
}
else {
categorySelected = 1;
}
CheckIfCategoryChecked();
});
Jetzt ist es aber so, dass ich, nachdem ich eine Kategorie erstellt oder bearbeitet habe, diese auch automatisch auswählen will. Ich habe also folgende Funktion geschrieben:
PHP:
function selectEditedCategory(catid) {
categoryid = 'training_management_categories_list_a_' + catid.toString();
$("#training_management_categories_items>ul>li>a").removeClass('categories_selected');
$('#'+categoryid).addClass('categories_selected');
console.log(categoryid);
}
Ich rufe also zum Beispiel selectEditedCategory(selectedcategoryid) auf, wobei selectedcategoryid natürlich die ID des Eintrags aus der Datenbank und damit auch die ID des Elements ist (siehe Funktion GetCategories() oben).
Zum Testen logge ich das Ganze sogar mit und das Log sagt:
training_management_categories_list_a_80
Also soweit alles vollkommen gut. Allerdings funktioniert es nicht, die Klasse wird nicht hinzugefügt.
Nutze ich
PHP:
$('#'+categoryid).trigger('click');
Mache ich das hier:
PHP:
document.getElementById(categoryid).click();
Habe noch mal mit Firebug drüber geschaut und Firebug zeigt den Quellcode (ich gebe jetzt mal einen Beispiellink) nach dem AJAX-Call so an:
HTML:
<a id="training_management_categories_list_a_86" class="training_management_categories_list_a" data-id="86" href="">ads</a>
Ich bin ratlos.
Es ist nicht so, dass ich die Funktion unbedingt brauche (wobei es schon gut wäre), es geht mir hier mehr ums Verständnis, weil ich absolut am Ende mit meinem Latein bin.
Ich danke schonmal im Voraus für jede Hilfe bei diesem Rätsel.
Gruß
Broco
P.S.: Nicht über das Attribut "data-id" wundern, darin wird nur die ID gespeichert, also ohne den Text davor als reine Zahl. So brauche ich nicht nachher noch den Text zu strippen. Ist HTML5-konform ;-)
Zuletzt bearbeitet von einem Moderator: