2013-09-08 2 views
0

Я не уверен, что это возможно. Выбор нескольких элементов легко, но сегодня я сомневаюсь, возможно ли это или нет:

$(this).closest("li, + $(this)").css('text-decoration','line-through'); 

Приведенный выше код, конечно, не работает. Это просто для демонстрации идеи. Я хочу ударить по всему li (текст и флажок), поэтому я выбрал li вместе с checkbox.

+0

Даже если вы исправили синтаксис, почему бы вам выбрать самый близкий к нему элемент? Чего вы пытаетесь достичь? – Shomz

+0

'line-through' применим только к тексту, а не к флажку. Вы могли бы изобрести какой-то пользовательский (и очень грязный) способ пробить флажок, но это более нормально (и намного проще) отключить его. –

ответ

3

$(this).closest("li").andSelf().css('text-decoration','line-through');

или

$(this).closest("li").addBack().css('text-decoration','line-through');

для JQuery 1.8 и выше

+0

Да, я как раз собирался сказать: '.andSelf (') стал устаревшим в 1.8 в пользу '.addBack()'. –

+0

Итак, в этом случае список объектов является ближайшим li и исходной целью? Какой нечетный набор выбранных элементов, но я думаю, я мог видеть, где это может пригодиться. – DevlshOne

1

Чистейшее решение заключается в использовании addBack, WH ич посвящена такого использования:

$(this).closest("li").addBack().css('text-decoration','line-through'); 
+0

Ницца. Я не знал этого +1 – Starx

+0

Он должен быть 'addBack()' (JS чувствителен к регистру) – JJJ

+0

Кстати, почему это самое чистое? – Starx

1

Вы можете использовать функцию .add() добавить селекторы:

$(this).closest("li").add(this).css('text-decoration','line-through'); 
0

Использование andSelf.

Описание: Добавить предыдущий набор элементов в стек к текущему набору .

Код:

$(this).closest("li").andSelf().css('text-decoration','line-through'); 

теперь я прочитал в документации, что:

Примечание: Эта функция устарела и теперь является псевдонимом для .addBack(), который должен использовать с jQuery 1.8 и более поздними версиями.

Так что используйте addBack, если вы находитесь на jQuery 1.8 или новее.

Код:

$(this).closest("li").addBack().css('text-decoration','line-through'); 
0

Я предполагаю, что ваши $ (это) представляет собой флажок здесь. Если он находится внутри li, вы можете использовать

$(this).parent('li').css('text-decoration','line-through'); 

Это будет иметь крышку с лифтом.

$(this).closest("li").andSelf().css('text-decoration','line-through'); 
Смежные вопросы