Ich habe folgenden Code, mit dem an einem bestimmten Element bei Rechtsclick ein Contextmenü angezeigt wird.
Code
Der Aufruf erfolgt so
Hierbei sind "Items" die Items, die im Menü angezeigt werden.
Und "selected" ist eine Methode, die ausgelöst wird wenn auf ein Item geklickt wurde. Ihre Parameter sind die ID des Elements wo das Contextmenü erscheint, und die ID des geklickten Menüitems.
Nun aktualisiere ich das Element alle x Sekunden.Dabei muss ich die Funcktion zum Anzeigen erneut aufrufen. Soweit klappt auch alles nur bekomme ich dann in der "Selected" Methode immernoch die Ergebnisse vom letzen mal, statt ein einziges Ergebnis zurück.
Hat jemand vielleicht eine Idee was man da machen kann ?
Hier ist noch ein beispiel für einen Log
Hat sich erledigt.
PHP-Quellcode
- (function($) {
- $.fn.extend({
- /**
- * Stellt ein Contextmenu dar
- * @param {type} options Optionen für den Aufruf
- * @returns {undefined} nothing
- */
- contextmenu: function(options) {
- /**
- * Default Variablen
- */
- var defaults = {
- };
- var options = $.extend(defaults, options);
- // ID des Elements, an dem das Contextmenu angezeigt wird
- var createrId;
- // return this.each(function() {
- var o = options;
- var obj = $(this);
- /**
- * Wenn Rechtsclick auf das Element
- */
- $(obj).on('contextmenu', function(e) {
- ShowContext(e);
- return false;
- });
- /**
- * Wenn Click auf ein Items des Menus
- */
- $(document).on('click', '.contextitem', function(e) {
- var clickedId = $(e.target).closest('li').attr('id');
- if (options.selected)
- options.selected(clickedId, createrId);
- });
- /**
- * Wenn Click auf Document
- */
- $(document).on('click', function(e) {
- $('.context-menu').remove();
- });
- /**
- * Zeugt das Contextmenu an
- * @param {type} e Clickevent
- * @returns {undefined} nothing
- */
- function ShowContext(e) {
- var id = $(e.target).closest('tr').attr('id');
- createrId = id;
- if (e.button === 2)
- {
- $('body').append('<ul role="menu" class="context-menu"id="' + "" + '"></ul>');
- // if (this.header.toString().length > 0)
- // $('.context-menu').append('<li role="presentation" class="dropdown-header">' + this.header + '</li>')
- var id = 0;
- $.each(options.items, function(key, value) {
- if (key == 'line')
- $('.context-menu').append('<li role="presentation" class="divider"></li>')
- else
- {
- $('.context-menu').append('<li class="contextitem" id="' + id + '" role="presentation"><a role="menuitem" tabindex="-1" href="#"><span class="' + value['icon'] + '"></span> ' + value['name'] + '</a></li>')
- id = id + 1;
- }
- });
- $('.context-menu')
- .css('left', e.clientX)
- .css('top', e.clientY)
- .css('display', 'block')
- .fadeIn('slow');
- }
- }
- // });
- }
- });
- })(jQuery);
Hierbei sind "Items" die Items, die im Menü angezeigt werden.
Und "selected" ist eine Methode, die ausgelöst wird wenn auf ein Item geklickt wurde. Ihre Parameter sind die ID des Elements wo das Contextmenü erscheint, und die ID des geklickten Menüitems.
Nun aktualisiere ich das Element alle x Sekunden.Dabei muss ich die Funcktion zum Anzeigen erneut aufrufen. Soweit klappt auch alles nur bekomme ich dann in der "Selected" Methode immernoch die Ergebnisse vom letzen mal, statt ein einziges Ergebnis zurück.
Hat jemand vielleicht eine Idee was man da machen kann ?
Hier ist noch ein beispiel für einen Log
Hat sich erledigt.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „LaMiy“ ()