620

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

18 июля 2008, 1:05JavaScriptрейтинг +29-

Пятничные сниппеты jQueryНовая серия из сериала про сниппеты 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. Это последняя серия сниппетов.

Memori.rumister-wong.combobrdobr.rumoemesto.rudel.icio.uszakladki.yandex.rugoogle.com/bookmarks/

RSS Комментарии

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

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

тока, 18 июля 2008, 10:49
Тока, тут имеется ввиду что срабатывает со второго раза )
Владислав Мёдов, 18 июля 2008, 11:01
Блин как коммент удалить?) А то фильтры все убрали) Вот так должно быть: Я кстати тоже сначала разницу не увидел)

 // запретить #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, 18 июля 2008, 14:05
KELiON, для этого есть html()
Grin, 18 июля 2008, 14:16
2micle: нет, не выдохлись. Просто за неделю непросто сделать набор по-настоящему полезных сниппетов. Посты вроде сниппетов будут. Только реже.
Жека, 18 июля 2008, 14:51
в FAQ jQuery тоже интересные вещи написаны, например if ( $('#myDiv').is(':hidden') ) $('#myDiv').show();
Ti, 18 июля 2008, 17:18
Здесь все из faq (выборочный копи-паст с переводом). Просто мало кто читает факи, несмотря на то, что там бывают написаны интересные вещи. В примере, которые привел Ti мы узнаем, является ли объект скрытым, и показываем его если это так. Хотя можно писать просто $('#myDiv').show(); - это не породит ошибку, а результат будет тот же.
Жека, 18 июля 2008, 18:16
да, но на else можно сделать особые действия
Ti, 18 июля 2008, 18:41
например?
Grin, 18 июля 2008, 18:48
Например, скрыть #myDiv и показать какой-то другой блок.
Жека, 18 июля 2008, 19:07
KELiON писал:
Проще замнить на:
// запретить #x
$("#x").attr("disabled","true");
// разрешить #x
$("#x").attr("disabled","");
Потому что просто меньше писать)
Так неправильно делать, атрибут "disabled" не может принимать пустое значение, чтобы убедиться в этом, можете написать этот атрибут с пустым значением и проверить валидатором, увидите ошибку... в случае с HTML этот атрибут вообще может не принимать значений, поэтому лучше использовать метод .removeAttr('disabled'), тоже и для checked.
Octane, 20 июля 2008, 21:46
Спасибо за дельные замечания.
Жека, 20 июля 2008, 22:22
Спасибо, не знал, теперь понял
KELiON, 21 июля 2008, 11:27
Забавно. Я к своим собственным сниппетам уже раз пять обращался. Так что соврал я по поводу того, что это последняя серия сниппетов.
Жека, 22 июля 2008, 16:32
Хм, недавно для себя кое что открыл:) Нужно было значение выбранного элемента из радио группыы с определенным именем (т.к. на странице было несколько радио), использовал вот что $("input[@name='sale-type']:checked").attr("value"), может кому пригодиться:)
KELiON, 23 июля 2008, 13:01

Спонсоры

Wi-Fi точки в твоем городе
Profit-project.ru - заработай на своих сайтах Реклама на сайте

Блогорол