JQuery: делегировать себя?
Прежде всего скажу, что я использую старую версию библиотеки jQuery (а именно 1.4.2). Обновление до jQuery 1.7 займет некоторое время (особенно для поиска ошибок), поэтому я ищу решение, которое работает в 1.4.2.
Я хочу написать функцию:
function _setupGui($domNode, selector){
$domNode
.delegate(selector, 'mouseenter', function(){ /* do smth awesome */ }
.delegate(selector, 'mouseleave', function(){ /* do smth awesome */ }
.delegate(selector, 'click', function(){ /* do smth awesome */ }
}
и быть в состоянии дать селектор, который позволяет выбрать "себя".
Существует ли селектор, который вы можете передать делегату, который позволяет выбрать узел, содержащий делегирование?
В jQuery 1.7 $domNode.on('click', null, function(){/*handler*/})
делает именно это, и является фактической реализацией $domNode.delegate(null, 'click', function(){/*handler*/})
, Однако в 1.4.2 последняя ничего не делает.
Это изменение в семантике по сравнению с предыдущими версиями?
1 ответ
Я думаю, что вы действительно хотите, чтобы прикрепить обработчики непосредственно к элементу и не использовать delegate
совсем. Вы могли бы справиться с этим самостоятельно. Возможно, что-то вроде этого, где передача "я" означает просто прикрепить события:
function _setupGui($domNode, selector){
if(selector == "self"){
$domNode
.mouseenter(function(){ /* do smth awesome */ })
.mouseleave(function(){ /* do smth awesome */ })
.click(function(){ /* do smth awesome */ })
}else{
$domNode
.delegate(selector, 'mouseenter', function(){ /* do smth awesome */ })
.delegate(selector, 'mouseleave', function(){ /* do smth awesome */ })
.delegate(selector, 'click', function(){ /* do smth awesome */ })
}
}