NilColor

Guess what? You're on my site!

Archive for the ‘jquery’ Category

`!` в имени события

without comments

Следующий код довольно часто можно видеть, если используется библиотека jQuery:

$('#foo')
  .bind('click', function(){ console.log('click event') })
  .bind('click.my', function(){ console.log('click.my event') }); //namespaced event
//потом это обработчики могут вызываться...
console.log('step 1');
$('#foo').trigger('click');
console.log('step 2');
$('#foo').trigger('click.my');

Результатом этих вызовов будет вывод в консоль следующего:

step 1
click event
click.my event
step 2
click.my event

Это хорошо известно, про это написано в доках по jQuery и это понятно. А вот про что там не написано, это про то, что можно написать так:

console.log('step 3');
$('#foo').trigger('click!');

(обратите внимание на восклицательный знак в имени ивента). И вот тогда в консоле мы увидем такое:

step 2
click event

И все. Т.е. вывода click.my event мы не увидим. Если посмотерть в исходники jQuery, то там это выглядит так:

...
if ( type.indexOf("!") >= 0 ) {
    event.type = type = type.slice(0, -1);
    event.exclusive = true;
}
...

т.е. это некий вариант exclusive событий. И этим, в частности, пользуется плагин DataLink, изучение исходников которого (на предмет “переделать для себя”) и всплыло это странное exclusive.

Written by NilColor

February 22nd, 2011 at 5:13 pm

Posted in jquery

Tagged with , ,

Расширение jQuery

without comments

[jQuery][1] – небольшая и крайне удобная JavaScript библиотека позволяющая сильно расширить возможности вэб-приложения не рисую при этом жутковатых конструкций если надо сделать AJAX-запрос или потеребить DOM документа. Вот например вполне себе работающий кусок JavaScript с использованием jQuery:

$alertHolder = $('<div></div>')  
.attr('id', 'tsm_alert')  
.addClass('tsm_alert')  
.append($('<h1 id="alert_title"></h1>'))  
.append($('<img src="/media/tsm/img/close.gif" title="Закрыть" />').click(tsm_alert_close))  
.append($('<div id="alert_text"></div>'))  
.insertBefore(document.body.firstChild)  
.hide();

Что тут делается? Это кусок из кода, который приделывает к вэб-приложению аналог alert’а, но не такой раздражающий ;)

Ну и как и положено такого рода библиотекам (да и JavaScript’у в целом) – ее можно расширять своими плагинами.

Read the rest of this entry »

Written by NilColor

January 11th, 2008 at 9:16 am

Posted in jquery

Tagged with , , , ,