#jquery
#jquery
Вопрос:
Мне интересно, возможно ли привязать несколько функций к одному событию в реальном времени.
$('.block a.submit').live("click",
function(){
$(this).text('Save').parent().each(function(){
$(".value", this).hide();
$(".edit", this).show();
$(this).find('.edit :first').focus(); //focuses on first form element - less clicks
$('thead').show();
});
},
function(){
$(this).text('Edit').parent().each(function(){
$(".edit", this).hide();
$(".value", this).show();
$('thead').hide();
});
}
);
Комментарии:
1. если события live не было,
click
но былоhover
, это было бы допустимо2. @Нил, нет, этого не будет.
.live()
Метод принимает один метод для привязки к событию. Дляhover
события это просто привязало бы один метод, предоставленный для обоихmouseenter
иmouseleave
.
Ответ №1:
я не уверен, что вы хотите сделать, но да, вы можете, просто разделите это на две части:
$('.block a.submit').live("click",
function(){
$(this).text('Save').parent().each(function(){
$(".value", this).hide();
$(".edit", this).show();
$(this).find('.edit :first').focus(); //focuses on first form element - less clicks
$('thead').show();
});
}).live('click',
function(){
$(this).text('Edit').parent().each(function(){
$(".edit", this).hide();
$(".value", this).show();
$('thead').hide();
});
}
);
или вы можете поместить обе вещи, которые вы хотите сделать, в одну функцию:
$('.block a.submit').live("click",
function(){
$(this).text('Save').parent().each(function(){
$(".value", this).hide();
$(".edit", this).show();
$(this).find('.edit :first').focus(); //focuses on first form element - less clicks
$('thead').show();
});
//second thing
$(this).text('Edit').parent().each(function(){
$(".edit", this).hide();
$(".value", this).show();
$('thead').hide();
});
}
);
Ответ №2:
Нет, но вы можете объединить свои методы в один
$('.block a.submit').live("click",
function(){
$(this).text('Save').parent().each(function(){
$(".value", this).hide();
$(".edit", this).show();
$(this).find('.edit :first').focus(); //focuses on first form element - less clicks
$('thead').show();
});
$(this).text('Edit').parent().each(function(){
$(".edit", this).hide();
$(".value", this).show();
$('thead').hide();
});
}
);
Ответ №3:
$('.block a.submit').live("click","keydown","keyup",
function(){
Я верю в это.
Комментарии:
1. Это неправильный синтаксис ( должен быть
.live('click keydown keyup')
), но концепция, о которой вы говорите, заключается в привязке одного метода к нескольким событиям. Операционная система запрашивает несколько методов для одного события.
Ответ №4:
Просто удалите вторую function() {
Почему вы хотите ограничить количество инструкций в одной анонимной функции?
Ответ №5:
Да, но я не думаю, что вам нужно проводить здесь живые события
Текущие события необходимы только в том случае, если вы вводите элементы в dom и хотите, чтобы ваши существующие события автоматически подключались к новым элементам..
В любом случае и bind, и live будут работать с несколькими слушателями.
$('.block a.submit').bind("click",
function(){
$(this).text('Save').parent().each(function(){
$(".value", this).hide();
$(".edit", this).show();
$(this).find('.edit :first').focus(); //focuses on first form element - less clicks
$('thead').show();
});
}).bind("click",
function(){
$(this).text('Edit').parent().each(function(){
$(".edit", this).hide();
$(".value", this).show();
$('thead').hide();
});
}
);