2010-04-01 3 views
1

Я пытаюсь создать способ, чтобы мои селекторы «слушали» «глобальные» события, которые выходят за рамки обычного «click» «change» submit и т. Д. Я исследовали различные «eventmanagers», которые я мог найти, и они все еще предназначены для форм. Есть ли способ сделать что-то подобное для нестандартных (т. Е. Пользовательских) событий? Цель состоит в том, чтобы селекторы подписывались на какое-либо событие, а затем могли вызвать его в один место, и он поднимет его для всего, что подписались на него.прослушивание событий jquery, нестандартные события

Вставка примера демонстрации.

return this.each(function() { 
    $(this).live('ON_CONTENT_CHANGING', function (e) { 
    $(this).block({ 
    overlayCSS: { opacity: 1, color: '#000' }, 
    timeout: 800 
    }); 

    e.preventDefault(); 
    }); 

    $(this).live('ON_CONTENT_CHANGED', function (e) { 
    $(this).sliding(); 
    $(this).unblock(); 

    e.preventDefault(); 
    }); 

// Остальные плагин ...

$("*").trigger('ON_CONTENT_CHANGING'); 

ответ

5

Это встроенный в JQuery, например:

$(".button").bind("myEvent", function() { 
    alert("myEvent fired on " + this.id); 
}); 

Trigger по:

$("*").trigger("myEvent"); 

или на определенный элемент (или любой селектор, как и все el се Jquery):

$("#myButton").trigger("myEvent"); 

Это использует .bind() и .trigger(). Как Иаков указывает, в комментариях, вы можете также связать с .live() пользовательских событий в 1.4+, как это:

$(".button").live("myEvent", function() { 
    alert("myEvent fired on " + this.id); 
}); 
+0

Кроме того, если вы используете «живой()» вместо «связывания()» вы можете связать для селектора и новых элементов, которые соответствуют селектору, будут подписаны на это событие, даже если они не существовали при настройке привязки. –

+0

@JacobM :: Однако имейте в виду, что live до 1.4 был ограничен щелчком, dblclick, keydown, keypress, keyup, mousedown, mousemove, mouseout, mouseover и mouseup. Источник: http://api.jquery.com/live/ – Powerlord

+0

Я где-то читал, что селектор «*» довольно плох в использовании, есть ли какая-то правда? Не будет ли это распространяться на каждый пункт в DOM? – Ciel

Смежные вопросы