Пятничные сниппеты. jQuery, часть 3

Пятничные сниппеты. jQuery, часть 3

Новая серия из сериала про сниппеты jQuery. На этот раз не самые очевидные функции.

В прошлых сериях:

1. Пятничные сниппеты. jQuery, часть первая;

2. Пятничные сниппеты. jQuery, часть вторая.


 

1. Как узнать, имеется ли на странице элемент

Для этого проще всего воспользоваться свойством length:

if ( $('#myDiv').length ) { /* что-то делаем */}

2. Как запретить/разрешить элемент (disable/enable)

 // запретить #x
$("#x").attr("disabled","disabled");
// разрешить #x
$("#x").removeAttr("disabled");

3. Как сделать выбор/отмену выбора чекбокса (check/uncheck)

// выбрать #x
$("#x").attr("checked", "checked");
// отменить выбор #x
$("#x").attr("checked","");

4. Как получить значение выбранного элемента в селекте

Рассмотрим такой селект:

<select id="sel">
<option value="1">vremenno</option>
<option value="2">net</option>
</select>

Для того чтобы получить value, достаточно написать

$("select#sel").val();

А вот, чтобы получить текст этого селекта, написать надо

$("#sel option:selected").text();

5. Как выбрать элементы, у которых в ID есть спецсимволы (".", "[", и т.п.)

$("#some.id") // не работает
$("#some\.id") // работает

6. Как определить, прописан ли у элемента класс (эта функция появилась в jQuery 1.2)

$('#something').hasClass("someClass")

 

Разработчики обещают, что версия 1.3 jQuery выйдет к концу лета текущего года. Я думаю, что мы не оставим это незамеченным.

PS. Это последняя серия сниппетов.

Расскажите друзьям

Оцените статью:
  • 1
  • 2
  • 3
  • 4
  • 5

Комментарии — 35

Жека
Владислав Мёдов увидел то, что видеть было нельзя. И поэтому его комментарий был безжалостно удален.
Владислав Мёдов
Да, теперь я знаю эту страшную тайну, но обещаю ее никому не рассказывать. За статейку спасибо, может пригодится в ближайшем будущем)
#
Владислав Мёдов
micle
Всё, выдохлись? :D
#
micle
ровный поцак
фуф, а я уж думал, что кончились у вас силенки и пятничных сниппетов уже не увидем. Огромное спасибо за эти.
#
ровный поцак
тока
а где разница?

$("#some.id") // не работает
$("#some.id") // работает

#
тока
Владислав Мёдов
Тока, тут имеется ввиду что срабатывает со второго раза )
#
Владислав Мёдов
KELiON
Блин как коммент удалить?) А то фильтры все убрали) Вот так должно быть: Я кстати тоже сначала разницу не увидел)

 // запретить #x
$("#x").attr("disabled","disabled");
// разрешить #x
$("#x").removeAttr("disabled");

Проще замнить на:

 // запретить #x
$("#x").attr("disabled","true");
// разрешить #x
$("#x").attr("disabled","");

Потому что просто меньше писать) (для чекбоксов тоже подходит) А еще у меня есть вопрос: Допустим у нас есть такой кусок кода:

 var a="какой нибудь текст с html-тегами"; // В принципе неважно
 $("#div_name").text(a);

Это немного не так работает, поскольку спецсимволы заменяются, а мне бы хотелось использовать теги. Приходиться такие коды обрабатывать без jQuery, с помощью innerHTML. Может есть варианты проще?
#
KELiON
Grin
KELiON, для этого есть html()
#
Grin
Жека
2micle: нет, не выдохлись. Просто за неделю непросто сделать набор по-настоящему полезных сниппетов. Посты вроде сниппетов будут. Только реже.
Ti
в FAQ jQuery тоже интересные вещи написаны, например if ( $('#myDiv').is(':hidden') ) $('#myDiv').show();
#
Ti
Жека
Здесь все из faq (выборочный копи-паст с переводом). Просто мало кто читает факи, несмотря на то, что там бывают написаны интересные вещи. В примере, которые привел Ti мы узнаем, является ли объект скрытым, и показываем его если это так. Хотя можно писать просто $('#myDiv').show(); - это не породит ошибку, а результат будет тот же.
Ti
да, но на else можно сделать особые действия
#
Ti
Grin
например?
#
Grin
Жека
Например, скрыть #myDiv и показать какой-то другой блок.
Octane
KELiON писал:
Проще замнить на:
// запретить #x
$("#x").attr("disabled","true");
// разрешить #x
$("#x").attr("disabled","");
Потому что просто меньше писать)
Так неправильно делать, атрибут "disabled" не может принимать пустое значение, чтобы убедиться в этом, можете написать этот атрибут с пустым значением и проверить валидатором, увидите ошибку... в случае с HTML этот атрибут вообще может не принимать значений, поэтому лучше использовать метод .removeAttr('disabled'), тоже и для checked.
Жека
Спасибо за дельные замечания.
KELiON
Спасибо, не знал, теперь понял
#
KELiON
Жека
Забавно. Я к своим собственным сниппетам уже раз пять обращался. Так что соврал я по поводу того, что это последняя серия сниппетов.
KELiON
Хм, недавно для себя кое что открыл:) Нужно было значение выбранного элемента из радио группыы с определенным именем (т.к. на странице было несколько радио), использовал вот что $("input[@name='sale-type']:checked").attr("value"), может кому пригодиться:)
#
KELiON
Snowcore
@KELiON:
а зачем в селекторе перед name писать @?
и зачем использовать .attr("value"), если можно просто .val() ?
Wincert
А радио кнопку как отметить на jquery? Как чекбокс не получается...
#
Wincert
IDVsbruck
А я копался с этим {...}.attr("disabled") и в конце-концов пришел к тому, что можно использовать {...}.attr("disabled", true) и {...}.attr("disabled", false). Проверял где мог - работает.
#
IDVsbruck
228vit@gmail.com
$("#some.id") // не работает
$("#some.id") // работает

Не понял в чем разница? :)
#
228vit@gmail.com
Grin
там должный быть 2 обратных слеша перед точкой во втором случае - они просто похерились
#
Grin
FORMAT
Доброго времени стуок. Я новичок в jquery. Пока-что просто эксперементирую с плагинами и функциями. У меня есть вопрос к знающим:

Как активировать на какой-то странице функцию, если на странице есть определённый элемент div?

Спасибо.
#
FORMAT
Grin
FORMAT, что-то я не очень понял твой вопрос
#
Grin
FORMAT
у меня есть плагин для jquery - jqmodal, создаёт модальные окошки. http://dev.iceburg.net/jquery/jqModal/

я хочу применить его для всплывающего нового персонального сообщения в моём движке...

т.е. если использовать этот плагин стандартно, то в код страницы нужно написать код окошко и функцию для его вызова через ссылку или что-то другое...

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

А я хочу, чтобы оно выводилось в модальном окошке с помощью этого плагина.

Так вот как можно сделать, если на странице есть элемент (код сообщения с текстом), то автоматом выводилось в окошке?
#
FORMAT
FORMAT
к примеру, если у меня на странице появляется код Заголовоктекст сообщения

то вызывалось бы окошко с помощью плагина, в котором будет этот заголовок и текст сообщения.
#
FORMAT
FORMAT
упс, извиняюсь, код съелся...
ЗаголовокТекст сообщения
#
FORMAT
Grin
FORMAT, пиши на мыло )
#
Grin
Николай Громов (nicothin)
приветствую.
а как отследить изменение чекбокса пользователем и вызвать при этом к-л событие?
Grin
Николай, вешай событие change на этот чекбокс и проверяй у него аттрибут checked
Drafter1
Пригодился мне ваш снипет, даже очень
sunsey
Спасибо за ссылку, помогло разобраться в синтаксисе. К стати, советую полазить по сайту, в целом не плохой ресурс. Описывается всё понятным языком.
#
sunsey

Новый комментарий

как выглядит какой тег
жирный текст <b>жирный текст</b>
курсивный тект <i>курсивный тект</i>
зачеркнутый текст <s>зачеркнутый текст</s>
подчеркнутый текст <u>подчеркнутый текст</u>
ссылка <a href="адрес">ссылка</a>
function foo() { ... }
<pre><code>function foo() { ... } </code></pre>
разрешенные теги или посмотреть как будет выглядеть
как выглядит какой тег
жирный текст <b>жирный текст</b>
курсивный тект <i>курсивный тект</i>
зачеркнутый текст <s>зачеркнутый текст</s>
подчеркнутый текст <u>подчеркнутый текст</u>
ссылка <a href="адрес">ссылка</a>
function foo() { ... }
<pre><code>function foo() { ... } </code></pre>
разрешенные теги или посмотреть как будет выглядеть

metin2 pvp metin2 pvp serverler pvp serverler