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

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

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

Рекламное место, которое может стать вашим

Понравилась статья?

Тогда подпишись на обновления через RSS или воспользуйся
другими способами подписки.

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

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

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 в 15:35 ]]>Николай Громов (nicothin)]]>
    приветствую.
    а как отследить изменение чекбокса пользователем и вызвать при этом к-л событие?
  • Аватарка
    12 мая 2009 в 18:56 ]]>Grin]]>
    Николай, вешай событие change на этот чекбокс и проверяй у него аттрибут checked
  • Аватарка
    21 апреля в 22:54 ]]>Drafter1]]>
    Пригодился мне ваш снипет, даже очень
  • Эл. почта (используется для Граватарки)
  • Домашняя страница
  • Имя в Твиттере
  • Разрешенные теги Текст сообщения (надо бы заполнить это поле)
  • как выглядит какой тег
    жирный текст <b>жирный текст</b>
    курсивный тект <i>курсивный тект</i>
    зачеркнутый текст <s>зачеркнутый текст</s>
    подчеркнутый текст <u>подчеркнутый текст</u>
    ссылка <a href="адрес">ссылка</a>
    function foo() { ... }
    <pre><code>function foo() { ... } </code></pre>