[jQuery] Custom method?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Topicstarter
Ik ben bezig met het omzetten van wat oude code naar jquery. Het linken van allerlei functies maakt de code een stuk leesbaarder! Wat alleen niet lukt, is het toevoegen van een custom method in jQuery syntax. Dus


JavaScript:
1
2
3
$('#monkey')
.addClass('hairy')
.addMethod('eatBanana',function(){...});


Die addMethod functie bestaat dus niet. Ik heb attr() geprobeerd als vervanger, maar dat voert de functie direct uit en slaat het resultaat op als attribuut.

Bestaat deze syntax, of kun je het toevoegen van custom methods gewoon niet linken?

TabCinema : NiftySplit


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 10-09 21:12

Matis

Rubber Rocket

Misschien begrijp ik je verkeerd, maar is dit niet wat je wilt?
JavaScript:
1
2
3
4
5
6
7
jQuery.fn.yourfunctionname = function() {
    var args = arguments[0] || {}; // It's your object of arguments
    var dataSource = args.dataSource;
    var pagingStart = args.pagingStart;
};
// And now, use it like this:
$(elem).yourfunctionname({dataSource: [], pagingStart: 5});

Bron: http://blogs.microsoft.co...-functions-in-jquery.aspx

JavaScript:
1
2
3
4
5
$.fn.myFunction = function() { 
    return $(this).addClass('changed'); 
}
// And now, use it like this:
$('.changePlease').myFunction();

Zoals beschreven staat op: http://jquery-howto.blogs...-custom-functions-to.html


Zoeken op [google=jquery add function] en/of [google=define your own jquery function] :)

[ Voor 72% gewijzigd door Matis op 22-12-2010 18:55 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
^^ Wat hij zegt. En anders: doel je niet op een bind() achtig iets?

[ Voor 16% gewijzigd door RobIII op 22-12-2010 18:54 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Topicstarter
Niet helemaal. Ik wil een inline (anonieme) functie declareren in de jQuery syntax, gewoon omdat dat leesbaar is icm chaining.

Met de fn functie zou ik eerste de functie ergens (globaal) moeten declareren, wat de leesbaarheid juist niet ten goede komt. De bind functie voegt een event handler toe, geen method.

Misschien is de meest elegante oplossing om met jQuery.fn een addMethod functie te declareren.

edit na even pielen:
JavaScript:
1
2
3
4
5
6
7
jQuery.fn.addMethod = function() {
  var methodName = arguments[0];
  var methodFunc = arguments[1];
  return this.each(function() {
    this[methodName] = methodFunc;
  });
}

[ Voor 21% gewijzigd door Bozozo op 22-12-2010 20:41 ]

TabCinema : NiftySplit


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-09 08:45

Bosmonster

*zucht*

Ik snap niet goed wat je wilt. Je hebt het over het toevoegen van een anonieme functie, maar dat is niet wat je addMethod plugin doet.

Wat je volgens mij wilt is simpelweg een plugin maken. Zo is jQuery ook bedoeld. Als je deze goed opzet kun je deze ook gewoon chainen.

Wat jij nu doet is een method hangen aan een DOM-element en dat druist compleet in tegen de filosofie van jQuery, namelijk dat je de DOM niet uitbreidt, maar alleen van buitenaf via jQuery collecties manipuleert.

Als je werkelijk op deze manier methods wilt koppelen aan DOM-elementen, waarom gebruik je dan geen custom events?

JavaScript:
1
2
3
4
5
$('#monkey').bind('eatbanana',function(){
   /* ... */
});

$('#monkey').trigger('eatbanana');

[ Voor 49% gewijzigd door Bosmonster op 22-12-2010 23:51 ]


  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Topicstarter
Mijn dank is groot Bosmonster! Ik had de stap van custom method + call naar custom event + trigger nog niet gemaakt, maar dat ziet er inderdaad veel beter uit. Weer wat geleerd vandaag :)

TabCinema : NiftySplit

Pagina: 1