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

18 июля 2008, 1:05 Евгений Белодед JavaScript рейтинг +38-

Пятничные сниппеты 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 или воспользуйся
другими способами подписки.

Читать в Яндекс.Ленте Добавить в Google Добавить в Netvibes
  •  

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

RSS
  • Аватарка
    18 июля 2008, 2:19 Жека
    Владислав Мёдов увидел то, что видеть было нельзя. И поэтому его комментарий был безжалостно удален.
  • Аватарка
    18 июля 2008, 3:14 Владислав Мёдов
    Да, теперь я знаю эту страшную тайну, но обещаю ее никому не рассказывать. За статейку спасибо, может пригодится в ближайшем будущем)
  • Аватарка
    18 июля 2008, 8:53 micle
    Всё, выдохлись? :D
  • Аватарка
    18 июля 2008, 9:27 ровный поцак
    фуф, а я уж думал, что кончились у вас силенки и пятничных сниппетов уже не увидем. Огромное спасибо за эти.
  • Аватарка
    18 июля 2008, 10:49 тока
    а где разница?
    
    $("#some.id") // не работает
    $("#some.id") // работает
    
    
  • Аватарка
    18 июля 2008, 11:01 Владислав Мёдов
    Тока, тут имеется ввиду что срабатывает со второго раза )
  • Аватарка
    18 июля 2008, 14:05 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. Может есть варианты проще?
  • Аватарка
    18 июля 2008, 14:16 Grin
    KELiON, для этого есть html()
  • Аватарка
    18 июля 2008, 14:51 Жека
    2micle: нет, не выдохлись. Просто за неделю непросто сделать набор по-настоящему полезных сниппетов. Посты вроде сниппетов будут. Только реже.
  • Аватарка
    18 июля 2008, 17:18 Ti
    в FAQ jQuery тоже интересные вещи написаны, например if ( $('#myDiv').is(':hidden') ) $('#myDiv').show();
  • Аватарка
    18 июля 2008, 18:16 Жека
    Здесь все из faq (выборочный копи-паст с переводом). Просто мало кто читает факи, несмотря на то, что там бывают написаны интересные вещи. В примере, которые привел Ti мы узнаем, является ли объект скрытым, и показываем его если это так. Хотя можно писать просто $('#myDiv').show(); - это не породит ошибку, а результат будет тот же.
  • Аватарка
    18 июля 2008, 18:41 Ti
    да, но на else можно сделать особые действия
  • Аватарка
    18 июля 2008, 18:48 Grin
    например?
  • Аватарка
    18 июля 2008, 19:07 Жека
    Например, скрыть #myDiv и показать какой-то другой блок.
  • Аватарка
    20 июля 2008, 21:46 Octane
    KELiON писал:
    Проще замнить на:
    // запретить #x
    $("#x").attr("disabled","true");
    // разрешить #x
    $("#x").attr("disabled","");
    Потому что просто меньше писать)
    Так неправильно делать, атрибут "disabled" не может принимать пустое значение, чтобы убедиться в этом, можете написать этот атрибут с пустым значением и проверить валидатором, увидите ошибку... в случае с HTML этот атрибут вообще может не принимать значений, поэтому лучше использовать метод .removeAttr('disabled'), тоже и для checked.
  • Аватарка
    20 июля 2008, 22:22 Жека
    Спасибо за дельные замечания.
  • Аватарка
    21 июля 2008, 11:27 KELiON
    Спасибо, не знал, теперь понял
  • Аватарка
    22 июля 2008, 16:32 Жека
    Забавно. Я к своим собственным сниппетам уже раз пять обращался. Так что соврал я по поводу того, что это последняя серия сниппетов.
  • Аватарка
    23 июля 2008, 13:01 KELiON
    Хм, недавно для себя кое что открыл:) Нужно было значение выбранного элемента из радио группыы с определенным именем (т.к. на странице было несколько радио), использовал вот что $("input[@name='sale-type']:checked").attr("value"), может кому пригодиться:)
  • Аватарка
    10 декабря 2008, 11:25 Snowcore
    @KELiON:
    а зачем в селекторе перед name писать @?
    и зачем использовать .attr("value"), если можно просто .val() ?
  • Аватарка
    20 декабря 2008, 23:33 Wincert
    А радио кнопку как отметить на jquery? Как чекбокс не получается...
  • Аватарка
    21 декабря 2008, 1:47 IDVsbruck
    А я копался с этим {...}.attr("disabled") и в конце-концов пришел к тому, что можно использовать {...}.attr("disabled", true) и {...}.attr("disabled", false). Проверял где мог - работает.
  • Аватарка
    11 января 2009, 11:18 228vit@gmail.com
    $("#some.id") // не работает
    $("#some.id") // работает

    Не понял в чем разница? :)
  • Аватарка
    11 января 2009, 17:57 Grin
    там должный быть 2 обратных слеша перед точкой во втором случае - они просто похерились
  • Аватарка
    3 апреля 2009, 23:43 FORMAT
    Доброго времени стуок. Я новичок в jquery. Пока-что просто эксперементирую с плагинами и функциями. У меня есть вопрос к знающим:

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

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

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

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

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

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

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

    то вызывалось бы окошко с помощью плагина, в котором будет этот заголовок и текст сообщения.
  • Аватарка
    4 апреля 2009, 11:44 FORMAT
    упс, извиняюсь, код съелся...
    ЗаголовокТекст сообщения
  • Аватарка
    4 апреля 2009, 11:53 Grin
    FORMAT, пиши на мыло )
  • Аватарка
    приветствую.
    а как отследить изменение чекбокса пользователем и вызвать при этом к-л событие?
  • Аватарка
    12 мая 2009, 18:56 Grin
    Николай, вешай событие change на этот чекбокс и проверяй у него аттрибут checked
  • Эл. почта (используется для Граватарки)
  • Домашняя страница
  • Имя в Твиттере
  • Разрешенные теги Текст сообщения (надо бы заполнить это поле)
  • как выглядит какой тег
    жирный текст <b>жирный текст</b>
    курсивный тект <i>курсивный тект</i>
    зачеркнутый текст <s>зачеркнутый текст</s>
    подчеркнутый текст <u>подчеркнутый текст</u>
    ссылка <a href="адрес">ссылка</a>
    function foo() { ... }
    <pre><code>function foo() { ... } </code></pre>