Вход

Просмотр полной версии : removeClass() по маске


daykkin
30.07.2010, 23:20
Подскажите уважаемые как мне имея 10 классов в блоке div удалить только те, которые начинаются с символов скажем "optical" ? Причем это все нужно делать в функции click имея уже готовый div блок в $(this). Гугл и официальная api документация - не помогли. Зашел в тупик, уповаю на Вашу помощь.

sysya
31.07.2010, 09:11
двигайте в сторону регулярных выражений http://javascript.ru/search/node/регулярные+выражения
В вашем случае пробуйте играться с методом test
хотя removeClass() сам должен удалять нужный класс... или я что то недогоняю наверна...

daykkin
31.07.2010, 11:31
Начал копать и нашел решение этого вопроса в таком виде:
$(this)[0].className = $(this)[0].className.replace(/\bтексткласса.*\b/g, '');

Но теперь зашел в тупик в другом, не мение важном вопросе. Мне все в том же событии click все с теми же div блоком в $(this) нужно провернуть следующее - в одном месте события я должен провести проверку на наличие класса по маске и если ни одного класса нет, то я должен удалить определенный класс.

Например, у меня есть блок div c классами <div class="class-1 class-2 onclick-1 onclick-2 onclick-3 onclicks">

Я должен удалить класс "onclicks", только при условии что нет ни одного класса по маске "onclick-".

Как быть?

exec
31.07.2010, 12:07
if ( !$(this).is('[class^="onclick-"]') ) $(this).removeClass('onclicks');

daykkin
31.07.2010, 12:19
К сожалению не работает, версия jquery 1.2.6

x-yuri
31.07.2010, 14:24
во-первых, работает даже в 1.2.6
во-вторых, расскажи подробнее про эти классы

Начал копать и нашел решение этого вопроса в таком виде:
$(this)[0].className = $(this)[0].className.replace(/\bтексткласса.*\b/g, '');
и что, работает?

daykkin
31.07.2010, 15:40
эм.. да.
во первых работает, во вторых решение с поиском - не работает.
уже нашел рабочее решение в виде:
if (!$(this).attr('class').match(/onclick-\-.+?\b/))

sysya
31.07.2010, 15:49
if ( !$(this).is('[class^="onclick-"]') ) $(this).removeClass('onclicks');К сожалению не работает, версия jquery 1.2.6Не работает потому что всю строку проверяет с начала. Ковыряйте метод test$(this).attr('class').test('onclick-');так думаю сработает

daykkin
31.07.2010, 16:20
И так к сожалению не работает, но выше я уже написал рабочий вариант. Правда с использованием RegEx.

tenshi
01.08.2010, 01:28
зачем такие сложности?

daykkin
01.08.2010, 09:47
Не понимаю, зачем писать что-то не давая альтернатив? Дайте легкий путь, я свою проблему уже решил, а люди, которые найдут в будущем этот топик, должны владеть большим количеством информации и решений.

x-yuri
01.08.2010, 18:22
не понимаю, зачем игнорировать вопросы? Ответьте, а люди, которые найдут в будущем этот топик, увидят, что проблема высосана из пальца. Если же не высосана, они увидят что-то, что им может пригодится в дальнейшем. Легкого пути нету, потому что эта проблема в лучшем случае возникает редко, в худшем - при неправльном подходе.

daykkin
01.08.2010, 18:46
А вы уверены что текст в моем посте выше, предназначался именно вам? У вас какая-то странная болезнь, хотяяя, по-моему это называется эгоцентризм.

Теперь по существу, как проблема может быть высосана из пальца, если в Jquery официально remove/add/toogle/ - Class не поддерживают поиск по маске, решение моих вопросов пришлось искать по разным закромам интернета и я тщательно старался объяснить как и свои задачи, так и найденные варианты их решения - в этом топике. А Вы пожалуй предпочитаете меньше вчитываться, но больше критиковать.

Всем остальным, кто откликнулся, помогал наводками и не только - огромное спасибо. Судя по всему топик можно закрывать.

Kolyaj
01.08.2010, 20:55
если в Jquery официально remove/add/toogle/ - Class не поддерживают поиск по маске
Казалось бы, почему?

x-yuri
01.08.2010, 21:57
А вы уверены что текст в моем посте выше, предназначался именно вам? У вас какая-то странная болезнь, хотяяя, по-моему это называется эгоцентризм.
единственные, кому могло предназначатся сообщение - я и tenshi, причем задали мы один и тот же вопрос. Иначе кому?

и я тщательно старался объяснить как и свои задачи
о задаче не было сказано ничего

sysya
02.08.2010, 10:22
daykkin,
на словах объяснения не сильно помогают, покажите коды, как вы делаете, ведь может вы не правильно что то куда то впихнули и код не работает.