Пятничные сниппеты. 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

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

Жека
Владислав Мёдов увидел то, что видеть было нельзя. И поэтому его комментарий был безжалостно удален.
Владислав Мёдов
Да, теперь я знаю эту страшную тайну, но обещаю ее никому не рассказывать. За статейку спасибо, может пригодится в ближайшем будущем)
#
Владислав Мёдов
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
Пригодился мне ваш снипет, даже очень

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

как выглядит какой тег
жирный текст <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>
разрешенные теги или посмотреть как будет выглядеть
counter strike mt2 silkroad pvp metin2 metin2 pvp knight pvp gm olarak başlayan pvpler pvp silkroad pvp serverler counter strike serverler msn show cam show görüntülü sohbet oyunlar suskunlar gazete oku