|
|
|
| Один и тот же код, нужно повесить в разных местах на обработчик click.
Изначально было так:
//<?
$('#some').live('click',function(){
$(this)
.wait() // это своя функция, определена выше
.load('/some',function(data){
// some
})
.off('click') // тут обработчик отключается, а позже его нужно в другом месте включить
.off('hover');
});
|
Решил выделить код в функцию.
И выяснил, что чет никак я не разберусь с пространством имен в JS.
Столкнулся с тем, что чтоб передать в функцию вызывающий объект, нужно поизгаляться.
Постоянно что-то оказывается не определенным.
Пару раз даже удалось хром повесить =))
В итоге получилось, но я сомневаюсь, что правильно.
Как-то не в стиле jQuery.
//<?
funcName = function(element){
element
.wait()
.load('/some',function(data){
// some
})
.off('click')
.off('hover');
}
$('#some').live('click',function(){
funcName($(this));
});
$('#someOther').live('click',function(){
funcName($(this));
});
|
Подскажите, плиз, как правильнее сделать? Или все ок?
Как-то можно избавиться от function(){funcName($(this));});, чтоб сразу к своей функции обращаться, а не через еще одну безымянную функцию? | |
|
|
|
|
|
|
|
для: Sfinks
(22.09.2012 в 22:58)
| | О пространстве имен:
$(function() {
$('div').on('click.main', function(){
alert(this.id) //сработает для обоих div
});
$('#d2').on('click.main2', function(){
alert(this.tagName) //сработает только для второго div
});
//вызов обработчика передаст в обработчик ссылку на объект источник
//и только для события пространства main
$('#d1').trigger('click.main');
});
</script>
<div id="d1">Src 1</div>
<div id="d2">Src 2</div>
| О this:
$.fn.mainFn = function() {
alert(this.attr('id'))
}
//вызывает функцию с передачей ей объекта источника
$('#d1').mainFn();
$('#d2').mainFn();
|
| |
|
|
|
|
|
|
|
для: Sfinks
(22.09.2012 в 22:58)
| | ИМХО от function(){funcName($(this));}); избавится в данном случае нельзя. Единственное не понятно, зачем вы решили выделять код в функцию? Если нужно использовать его для другого идентификатора пишите $('#some, #someOther')... | |
|
|
|
|
|
|
|
для: fiction
(27.09.2012 в 16:37)
| | Нет после выключения обработчика, он потом снова подключается посреди другой обработки другого элемента, но на этот же изначальный элемент. | |
|
|
|