Jump to content
php.lv forumi
  • 0

jquery learning


waplet

Question

Esmu galīgi balts jquerijā.

Taisu kodu, lai būtu countdowns.

(function($){
 $.fn.start = function (laiks){
   laiks = laiks;
   id = $(this).attr('id');
   $(this).skaitit(id, laiks);
   return this;
 };
 $.fn.skaitit = function (id, laiks ){
   if(laiks > 0){
     laiks = laiks - 1;
     $('#' + id).html(laiks);
     setTimeout(function() { $this.skaitit($(this).attr('id'); , laiks)}, 1000);
   };    
 };

})(jQuery);

$('#timer2').start(120);

saka, ka start is not a function?

Kas pa lietu?

Esmu totāls iesācējs iekš jquery.

Link to comment
Share on other sites

15 answers to this question

Recommended Posts

  • 0

http://api.jquery.com/start

 

Laikam start() nav jQ funkcija... =(

 

Labojums:

 

Varbūt uzmet aci šim... =)

 

http://www.littlewebthings.com/projects/countdown/demo/js/jquery.lwtCountdown-1.0.js

Edited by daGrevis
Link to comment
Share on other sites

  • 0

$this.skaitit($(this) ?

 

Normālā gadījumā, ja lietotu kādu IDE'i, uzreiz redzētu, kur tiek izmantots mainīgais, kas nav definēts.

 

Un kāds tolks no šādas rindiņas?

laiks = laiks;

 

Un lai definētu jaunu mainīgo, ir jālieto var atslēgvārds.

Edited by briedis
Link to comment
Share on other sites

  • 0

ezis, viņš pats definēt to funkciju.

 

waplet, pamēģini salikt viņus kopā, vai tad strādās, vai gadījumā nav problēmas ar scope.

 

..a kur vispār tiek iekļauts jquery js? Ja pēc w.js, tad noteikti nestrādās, jo neeksistē tāds jQuery objekts.

Link to comment
Share on other sites

  • 0

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<script type="text/javascript" src="/spele/w.countdown.js"></script>

Ir šāds head daļā.

 

Ja es laižu caur

$('#timer2').skaitit(120);

tad iet, bet ar start neiet, nezinu kāpēc.

Edit: laikam būs jāmācās JS

Edit2: Vairs neviens neiet :D

Edited by waplet
Link to comment
Share on other sites

  • 0

(function($){
 $.fn.start = function (laiks){
   id = $(this).attr('id');
   $(this).skaitit(id, laiks);
   return this;
 };
 $.fn.skaitit = function (id, laiks ){
   if(laiks > 0){
     laiks = laiks - 1;
     $('#' + id).html(laiks);
     setTimeout(function() { $this.skaitit($(this).attr('id'); , laiks)}, 1000);
   };    
 };

})(jQuery);

Šitas viss bija beigās.

Labāk sākšu ar jquery mācīšanos.

Varbut tur šo visu savādāk vajag uztvert :D

Link to comment
Share on other sites

  • 0

Kāpēc neizlaboji, to ko teicu?

 

$this.skaitit

 

Kas tas tāds $this par mainīgo? Vai gadījumā nedomāji $(this) ?

 

..Un ja tu definē jaunu mainīgo, tad obligāti jāliek var atslēgvārds.

 

nevis id = $(this).attr('id');

bet var id = $(this).attr('id');

Edited by briedis
Link to comment
Share on other sites

  • 0

Ok paldies, nedaudz paskatījos un papētīju citu kodus un jquery piedavāto dokumentāciju. Beigās sanāk šādi un drīz jau būs countdown so simple cik var būt :D

 

(function( $ ){
   // there's no need to do $(this) because
   // "this" is already a jquery object

   // $(this) would be the same as $($('#element'));
 $.fn.start = function( time ) {
   $(this).skaitit($(this).attr('id'),120);
 //  return this;
 };
 $.fn.skaitit = function( id, time ) {
   $this = $('#' + id);
   $this.html(time);
   setTimeout( function() { $this.skaitit(id, time-1) } ,1000);
 };
})( jQuery );

Link to comment
Share on other sites

  • 0

pirmkārt, pašizpildošā funkcija nav nepieciešama, ja netiek izmantoti nekādi lokālie mainīgie.

Otrkārt, id nav jāpadod, ja izmanto jQuery.fn. tas vienmēr būs this.

Es taisītu kaut kā šitā, ja jau gribi kā jQuery pluginu

jQuery.fn.skaitit = function(time){
  return this.each(function(){ // atgriež jQuery objektu 
    var localtime = time, // vajadzīgs, ja izmanto funkciju uz vairākiem elementiem uzreiz (closure)
        $self = jQuery(this), // saglabā objektu priekš lokālās timer funkcijas (closure)
        timer = function(){ // lokālā timer funkcija
          //if (localtime < 0) { return; } // pēc vajadzības
          $self.text(localtime--); 
          setTimeout(timer,1000); // izsauc pats sevi
        };
     timer(); // sākam timeri
  });
};
// izsauc
jQuery(function(){ // onready
jQuery('#timer2').skaitit(120); 
});

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...