2009-07-18 14 views
0

Normalerweise schreiben Sie ein Handler für eine Schaltfläche wie folgt klicken:korrekte Syntax für die Definition eines Ereignisses delegator

$(document).ready(function() 
{ 

    $("button").click(function() 
    {  
    doSomething(); 
    }); 
}); 

Aber im Fall eines event delegator, auf ein Ereignis mit einer Funktion wie diese zu reagieren:

Worüber ich verwirrt bin, ist die richtige Syntax zum Definieren des Ereignisses, das diese Delegatorfunktion aufruft - das? (A):

$(document).ready(function() 
{ 
    $(function() 
    { 
    $('button').click(doSomething); 
    }); 
}); 

oder das? (B):

$(document).ready(function() 
{ 
    $("button").click(doSomething); 
}); 

Was ist richtig und warum?

Antwort

5

In Auswahl A wiederholen Sie einfach die document.ready-Syntax zweimal.

// These two lines are equal 
$(document).ready(fn); 
$(fn); 

Alles, was Sie tun müssen, ist Wahl B

1

Während Wahl B würde sicherlich die Art und Weise, dies zu tun, wenn Sie in dem Fall eine separate Funktion, dh die Verwendung erforderlich, in denen Sie die aufgerufen werden benötigt funktionieren von irgendwo anders als ein Knopf klicken, ist meine Präferenz normalerweise, den Code in die Reihe zu bringen. Die einzigen anderen Male mache ich das nicht, wenn es die Lesbarkeit verbessern würde.

$(function() { 
    $("button").click(function(e) { 
     if (e.target.id == 'button1') { 
      alert('button1 clicked'); 
     } 
     ... 
    }); 
}); 
Verwandte Themen