[JS/jQuery] funkcje


(Marcin86s) #1

Dajmy na to że mam coś takiego w head strony głównej:

$('div:jakis').podpisz();

Do tego dołączony jest plik script.js z kodem funkcji która ma dodać podpis pod tym divem.

O ile wiem jak zrobić coś takiego gdy div będzie parametrem podpisz('div:jakis') to nie wiem jak to wykonać w formie przedrostka? #-o


(B.Andy) #2

Google


(Marcin86s) #3

Oh, dziękuje za tą wspaniałą poradę…

kolory.js

(function($) {

	$.fn.kolory = function(options) {

		options = $.extend({


		}, options);


		return this.each(function() {

			this.css({'color' : 'red'});

		});

	}

})(jQuery);

index

(...)

TESTY TESTY TESTY
[/code]


(B.Andy) #4

Podałem zapytanie do google, które w pierwszym wyniku daje konkretną odpowiedź na Twoje pytanie, czemu nie zrobiłeś tego jak tam piszą?

$.fn.Kolory = function() { 

    			return $(this).css({'color' : 'red'}); 

		}


		$(function() {

				$(".kolory").Kolory();

		});

Działa. W Twoim kodzie źle używasz this. Aby odnieść się do jQuery trzeba uzyć $(this) (tak jak w pierwszym linku). Poza tym po co each? Przecież wywołując $(".kolory").Kolory(); jQuery automatycznie wybierze wszystkie elementy ze strony i wywoła na nich funkcję


(Marcin86s) #5

Dzięki, a jak to napisać gdy będę chciał pod tą funkcją parę eventów? Chodzi mi tu o return.


(B.Andy) #6
$(this).css({'color' : 'red'});

			$(this).css({'font-size' : '30px'});

    			return $(this);

(Marcin86s) #7

Chodzi mi raczej o to gdy będzie np. click i dblclick i one zmieniają/dodają jakieś tam cssy. Wtedy też dawać return $(this)?


(B.Andy) #8
$(this).click(function() {

 				 $(this).css({'color' : 'blue'});

			});

    			return $(this);

Bez zwracania elementu kod nie będzie działał czasem poprawnie, np. bez return $(this)

$(".box").Kolory().css({'color' : 'red'});

nie zadziała odpowiednio


(Marcin86s) #9

Nie do końca o to mi chodziło. Nie miałem jak sprawdzić czy zadziała coś takiego.

$(this).click(function() {

      $(this).css({'color' : 'red'});

});

$(this).dblclick(function() {

      $(this)/dblclick({'color' : 'black'});

});

return ($this);