Как насчет этого?
// Take signed area of ABC.
// If negative,
// Swap B and C.
// Otherwise,
// Take signed area of ACD.
// If negative, swap C and D.
Идеи?
Вы можете инициировать настраиваемые глобальные события, подобные этому, в jQuery:
jQuery.event.trigger('mycustomevent', [arg1, arg2, arg3]);
Они будут запускаться для любого элемента.
Поскольку jQuery построен вокруг объектов DOM, вы должны привязать свои события к объектам DOM. Вероятно, вы можете найти способ привязать события и без элемента (вы это сделали), но это не поддерживаемая методология.
Как вы написали в своем собственном ответе, вы можете привязать свое событие к глобальному объекту DOM, если вы этого не сделаете. Я хочу привязать его к отдельному элементу страницы:
$(document).bind('mycustomevent', function (e, arg1, arg2, arg3) { /* ... */ });
Для будущих читателей это довольно просто сделать. Я провел дальнейшее исследование после публикации своего вопроса. К сожалению, никто из других комментаторов не был прав.
Чтобы привязать настраиваемое событие:
$().bind('mycustomevent', function(){
//code here
});
Кроме того, вы можете встроить данные в объект события, который позже станет доступным:
$({mydata:'testdata'}).bind('mycustomevent',function(){
//code here
});
Вы по-прежнему можете произвольно запускать события и отвечать на них с помощью jQuery, даже если вы не знаете, к какому элементу их прикрепить. Просто создайте в своем документе элемент «получатель», к которому вы можете привязать все свои пользовательские события. Это позволяет вам управлять логикой обработки событий в одном месте для всех событий, не связанных с элементами.
$(document).ready(function() {
$(body).append('<div id="receiver">');
$("#receiver").bind("foo_event", function () {
// decide what to do now that foo_event has been triggered.
});
$("#some_element").click(function() {
$("#receiver").trigger("foo_event");
});
});