Frage

Ich erstelle jQuery -Widgets so etwas

<script type="text/javascript">
(function ($) {
        $.widget("cb.bacon", {
            _create: function() {
                var self = this,
                    o = self.options,
                    el = self.element;

                 // Some code

            },

            _bacon: function() {
                var self = this,
                    o = self.options,
                    el = self.element;

                 // Some code
            },

            _smokey: function() {
                var self = this,
                    o = self.options,
                    el = self.element;

                 // Some code
            } 
        });
    })(jQuery);                 
</script>

Ich muss ausnahmslos deklarieren self, options, element In jeder Funktion, die ich erstelle.

Gibt es einige fondentale Verständnisse, dass ich fehlt oder muss ich das wirklich die ganze Zeit tun?

War es hilfreich?

Lösung

Sie müssen das überhaupt nicht tun, das ist nur, um den Zugriff auf diese innerhalb der Funktion zu erleichtern.

Das self Variable ist nützlich, wenn Sie einen Rückruf in einer jQuery -Funktion verwenden, wo this wäre auf das Element eingestellt, auf das Sie handeln. Zum Beispiel:

$('.bacon').each(function(){ $(this).css('background', self.getBackground()); });

Die Variablen o und el sorgt nur für weniger Tippen. Wenn Sie das Varaible haben self, oder die Referenz this Unverändert können Sie auf die zugreifen options und element Eigenschaften aus dem Objekt direkt.

Andere Tipps

Sie müssen diese Dinge jedes Mal deklarieren, da Sie ein Objektliteral verwenden. Sie können das Objektliteral als Funktionsaufruf einwickeln und das erreichen, was Sie so wollen.

<script type="text/javascript">
function makeTheBacon() {
    var self = this;
    var o = self.options;
    var el = self.element;

    self._create = function() {...};
    self._bacon = function() {...};
    self._smokey = function() {...};
    return self;
}

(function ($) {
    $.widget("cb.bacon", makeTheBacon());
})(jQuery);
</script>

Es gibt auch Fragen, die dies auch berühren, indem sie Funktionen im Objektliteral verwenden hier, aber das schien in Anbetracht Ihrer ursprünglichen Frage übermäßig ausführlich zu sein.

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