7
votes

Lier à préparer et à redimensionner en même temps en utilisant jQuery .on ()

Ceci fonctionne pour exécuter le même code sur prêts et redimensionnés: xxx

Comment accompliriez-vous le même résultat en utilisant jquery.on () ?


3 commentaires

sur est un remplacement de lid , live et délégué , mais pas les méthodes sténographiques. Si vous demandez de la curiosité, d'accord, mais vous n'avez pas à changer votre code pour utiliser .on .


@Felixkling J'aimerais comprendre le moyen le plus rapide.


@Felixkling et oui, aussi curieux.


3 Réponses :


14
votes

sur peut être utilisé pour filer le redimension et les événements prêts, comme tout autre événement.

Donc, vous pouvez créer une fonction qui a le code que vous souhaitez accéder à redimensionner et prêt , puis transmettez-le aux deux appels vers sur .

Si vous souhaitez conserver votre champ d'application de joindre, vous pouvez faire tout cela dans une fonction d'exécution immédiate: xxx

2012-07- 25 : il y a 2 différences à prendre conscience de l'utilisation de .on () pour attacher des gestionnaires prêts:

  • Les manuteners prêts ajoutés via $ (fn) et $ (document) .Ready (fn) sont "rétro-tirés" tandis que ceux ajoutés par .on () ne le sont pas. En utilisant celles-ci, si vous ajoutez un gestionnaire après que le DOM soit déjà chargé, le FN sera tiré immédiatement. Si vous ajoutez un gestionnaire via .on ('prête', fn) après le DOM est chargé, il sera pas être tiré par JQuery, Mais vous pouvez manuellement .trigger ('prêt') it.

  • lorsque vous utilisez $ (fn) ou $ (document) .Ready (fn) Pour ajouter un gestionnaire prêt, le FN reçoit < un href = "http://api.jquery.com/jquery/#jquerery3" rel = "noreferrer"> jQuery comme son 1er arg, permettant au familar jQuery ($ ($) ) {}) utilisation. Si vous utilisez $ (document) .on ('prête', fn) , la 1ère argine que le FN reçoit est un Objet d'événement . Dans les deux cas Ceci à l'intérieur du FN est le document . Si vous deviez faire quelque chose d'anormal comme $ ('# foo'). Sur ('prêt', fn) dans le but de déclencher, ceci serait le #foo élément.


2 commentaires

@Ryanve - Ouais, tu peux faire de grandes choses avec des fermetures à JavaScript


Je choisis cette réponse B / C C'est la question spécifique à la question et à sa lecture. La réponse de @jasper est également solide et peut être plus rapide en fonction de la situation.



4
votes

.Readady () , .Resize () , et d'autres comme .mouseover () sont toutes des coupes courtes pour utiliser le .bind () fonction (ou .on () dans jQuery 1.7+). .Resize (fonction () {}) mappe vers .bind ("redimensionner", fonction () {}) . Voici comment votre code regarderait à l'aide de .on () Dans la mesure du possible: xxx

voici une démonstration: http://jsfiddle.net/qmbtp/


1 commentaires

Utilisation de la gâchette ('Redimensionner') fait est plus rapide que redimension () . Cela peut être le moyen le plus rapide. JSPERF.COM/Bind-O-Ready-and-Resize-1



0
votes

Liez-le à la fois l'événement de chargement et de redimensionnement comme ci-dessous: xxx

beaucoup plus simple - espérons que cela aide.


0 commentaires