507 Stimmen

jQuery Tipps und Tricks

Syntax

Datenspeicherung

Optimierung

Sonstiges

252voto

Andreas Grech Punkte 102197

Ein HTML-Element erstellen und einen Verweis behalten

var newDiv = $("<div />");

newDiv.attr("id", "myNewDiv").appendTo("body");

/* Now whenever I want to append the new div I created, 
   I can just reference it from the "newDiv" variable */

Prüfen, ob ein Element existiert

if ($("#someDiv").length)
{
    // It exists...
}

Eigene Selektoren schreiben

$.extend($.expr[":"], {
    over100pixels: function (e)
    {
        return $(e).height() > 100;
    }
});

$(".box:over100pixels").click(function ()
{
    alert("The element you clicked is over 100 pixels height");
});

111voto

clawr Punkte 7757

JQuery's data() Methode ist nützlich und nicht sehr bekannt. Sie ermöglicht es Ihnen, Daten an DOM-Elemente zu binden, ohne das DOM zu verändern.

95voto

Nathan Long Punkte 117688

Verschachtelung von Filtern

Sie können Filter verschachteln (als nickf zeigte hier ).

.filter(":not(:has(.selected))")

80voto

Oli Punkte 226885

Ich bin wirklich kein Fan von der $(document).ready(fn) Abkürzung. Sicherlich wird dadurch der Code reduziert, aber auch die Lesbarkeit des Codes leidet darunter. Wenn Sie sehen $(document).ready(...) wissen Sie, was Sie vor sich haben. $(...) wird auf viel zu viele andere Arten verwendet, um auf Anhieb Sinn zu ergeben.

Wenn Sie mehrere Frameworks haben, können Sie jQuery.noConflict(); wie Sie sagen, aber Sie können auch eine andere Variable dafür zuweisen, etwa so:

var $j = jQuery.noConflict();

$j("#myDiv").hide();

Sehr nützlich, wenn Sie mehrere Frameworks haben, die sich auf folgende Punkte reduzieren lassen $x(...) -Style anruft.

77voto

Filip Dupanović Punkte 30692

Ooooh, nicht zu vergessen jQuery-Metadaten ! Die Funktion data() ist großartig, aber sie muss über jQuery-Aufrufe gefüllt werden.

Anstatt die W3C-Konformität mit benutzerdefinierten Elementattributen wie z. B.:

<input 
  name="email" 
  validation="required" 
  validate="email" 
  minLength="7" 
  maxLength="30"/> 

Verwenden Sie stattdessen Metadaten:

<input 
  name="email" 
  class="validation {validate: email, minLength: 2, maxLength: 50}" />

<script>
    jQuery('*[class=validation]').each(function () {
        var metadata = $(this).metadata();
        // etc.
    });
</script>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X