Frage

Ich habe ein JavaScript-Objekt erstellt auf einen Wert von einem Benutzer eingestellt halten eine checbox in einer Überprüfung ColorBox .

Ich bin relativ neu in jQuery und Programmierung JavaScript „der richtigen Weg“ und wollte sicher sein, dass der folgende Mechanismus zur Erfassung der Benutzer Check Aktion war eine bewährte Methode für JavaScript im Allgemeinen. Da ferner ich jQuery bin verwendet, ist es eine einfachere Methode auf ihre Wirkung zu halten, die ich verwendet werden sollte?

function Check() {
    this.Checked = false;
}

obj = new Check;

$(document).ready(function() {
    $('.cboxelement').colorbox({ html: '<input id="inactivate" type="checkbox" name="inactivatemachine">&nbsp;<label for="inactivate">Inactivate Machine</label>' });

    $(document).bind('cbox_cleanup', function() {
        obj.Checked = $.fn.colorbox.getContent().children('#inactivate').is(':checked');
    });

    $(document).bind('cbox_closed', function() {
        if ($($.fn.colorbox.element()).attr('id').match('Remove') && obj.Checked) {
            var row = $($.fn.colorbox.element()).parents('tr');
            row.fadeOut(1000, function() {
                row.remove();
            });
        }
    });
});
War es hilfreich?

Lösung

Persönlich würde ich den Wert (e) an ein Objekt anhängen direkt jQuery eingebauten in data() Verfahren. Ich bin nicht wirklich ganz sicher, was Sie versuchen, aber zu tun, können Sie zum Beispiel anhängen Werte auf einen „Namensraum“ in dem DOM für die spätere Verwendung ein.

$('body').data('colorbox.checked',true);

Dann würden Sie den Wert abrufen später durch:

var isChecked = $('body').data('colorbox.checked');

Sie führen die data() Methode auf jedem Jquery-Objekt. Ich würde sagen, dass dies am besten Praxis so weit wie jQuery geht.

Andere Tipps

Sie können den Verweis in einem Verschluss erfassen, die globalen Daten vermeidet und macht es einfacher, mehrere Schecks zu haben. Doch in diesem Fall erscheint es den einzelnen colorbox verbindlich zu sein, so dass ich weiß nicht, dass man sinnvollerweise mehrere Instanzen haben könnte.

function Check() {
    this.Checked = false;

    var obj = this; // 'this' doesn't get preserved in closures

    $(document).ready(function() {
       ... as before
    )};
}

var check = new Check; // Still need to store a reference somewhere.
  • $($.fn.colorbox.element()) ist überflüssig. $.fn.colorbox.element() ist bereits ein jquery Element.

  • Es ist die gemeinsame Nutzung (in den Beispielen i beobachtet, zumindest) eine $ zu Variablen voranstellen jquery Elemente verweisen.
    So gibt var $rows = $.fn.colorbox.element().parents('tr'); sofort die Idee, dass es jquery Element verweist (s).

  • Ich fürchte fadeOut wird auf Zeilen in IE6 nicht (wenn ich mich richtig erinnere). Sie sollten vor dem Entfernen alle Inhalte innerhalb des <tr> verstecken können.

Kann nicht auf die Hilfe Ding „vereinfachen“, weil ich weiß nicht, den besten Anwendungen des colorbox.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top