Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Кастомный метод для элемента выборки. (https://javascript.ru/forum/jquery/41718-kastomnyjj-metod-dlya-ehlementa-vyborki.html)

Casufi 26.09.2013 16:15

Кастомный метод для элемента выборки.
 
Выбираю элемент $('#someid') или несколько элементов по классу $('.someclass') Мне нужно для элементов в этой выборке реализовать метод, например $('.someclass').ColorIt() , которым потом будет раскрашиватся текст инпута во все цвета радуги (задача взята от балды)

Не хочу делать этот метод глобальный, потому что на любом элементе он может и не сработать, нужно чтобы жтот метод работал только на элементах из выборки $('.someclass')

как это сделать ?

рони 26.09.2013 16:43

Цитата:

Сообщение от Casufi
чтобы жтот метод работал только на элементах из выборки $('.someclass')

помедленнее ... если вы сделали выборку откуда в ней возьмутся иные элементы?

Яростный Меч 26.09.2013 17:43

например так

http://jsfiddle.net/zJng4/

Casufi 26.09.2013 17:56

Яростный Меч,
Это обычный плагин для JQuery. Дело в том, что для некоторых елементов метод ColorIt не имеет смысла, например, если выберем скрытый input, то раскрашивать нам его не смысла
$('input[type=hidden]').ColorIt(); не сработает.
Я бы хотел не объявлять сначала метод ColorIt а потом привязывать его к элементу, а сразу на элементе сделать реализацию метода.

Casufi 26.09.2013 17:59

Что то вроде

$('div').fn.ColorIt = function() {
    this.filter(".a").each(function() {
        $(this).css("color", "red");
    });
};

Яростный Меч 26.09.2013 18:21

Цитата:

Сообщение от Casufi
сразу на элементе сделать реализацию метода.

это можно (хотя непонятно зачем):
var divs = $('div');
divs.ColorIt = function() {
    this.filter(".a").each(function() {
        $(this).css("color", "red");
    });
};

divs.ColorIt();


только учти, что для другой выборки $('div') этого метода уже не будет.

Casufi 26.09.2013 18:31

Спасибо, это то что нужно

рони 26.09.2013 18:43

а почему не
var divs = $('div .a');
divs.ColorIt = function() {
        $(this).css("color", "red");
};
divs.ColorIt();


Часовой пояс GMT +3, время: 06:38.