Ответ 1
вы можете привязываться к нескольким событиям, разделяя их пробелом:
$(":input").bind("keyup change", function(e) {
// do stuff!
})
docs здесь.
надеюсь, что это поможет. ура!
Используя jQuery, я хотел бы запустить функцию, когда поднимаются значения .change()
или .keyup()
.
Что-то вроде этого.
if ( jQuery(':input').change() || jQuery(':input').keyup() )
{
alert( 'something happened!' );
}
ИЗМЕНИТЬ
Извините, что забыл упомянуть. И .change()
, и .keyup()
нужны некоторые из переменных, которые должны быть в области видимости.
вы можете привязываться к нескольким событиям, разделяя их пробелом:
$(":input").bind("keyup change", function(e) {
// do stuff!
})
docs здесь.
надеюсь, что это поможет. ура!
Если вы когда-либо динамически генерируете содержимое страницы или загружаете контент через AJAX, следующий пример действительно так, как вам следует:
body
документа, поэтому независимо от того, какие элементы добавлены, перемещены, удалены и повторно добавлены, все потомки body
, соответствующие указанному селектору, сохранят правильное связывание.Код:
// Define the element we wish to bind to.
var bind_to = ':input';
// Prevent double-binding.
$(document.body).off('change', bind_to);
// Bind the event to all body descendants matching the "bind_to" selector.
$(document.body).on('change keyup', bind_to, function(event) {
alert('something happened!');
});
Обратите внимание! Я использую $.on()
и $.off()
, а не другие методы по нескольким причинам:
$.live()
и $.die()
устарели и были опущены из более поздних версий jQuery.$.change()
, так и $.keyup()
отдельно или передавать одно и то же объявление функции каждой вызываемой функции; Дублирующая логика... Это абсолютно неприемлемо.$.bind()
не динамически связывается с элементами по мере их создания. Поэтому, если вы привязываетесь к :input
, а затем добавляете ввод в DOM, этот метод привязки не привязан к новому вводу. Затем вам нужно явно запретить привязку, а затем повторно привязать ко всем элементам в DOM (иначе вы в итоге дублируете дубликаты). Этот процесс нужно будет повторять каждый раз, когда вход был добавлен в DOM.Сделайте это.
$(function(){
var myFunction = function()
{
alert("myFunction called");
}
jQuery(':input').change(myFunction).keyup(myFunction);
});
Вы можете подписаться на события изменения и keyup:
$(function() {
$(':input').change(myFunction).keyup(myFunction);
});
где myFunction
- это функция, которую вы хотели бы выполнить:
function myFunction() {
alert( 'something happened!' );
}
Это не то, как работают события. Вместо этого вы даете им функцию, которая будет вызвана, когда они произойдут.
$("input").change(function() {
alert("Something happened!");
});
Напишите одну функцию и вызовите ее для обоих из них.
function yourHandler(e){
alert( 'something happened!' );
}
jQuery(':input').change(yourHandler).keyup(yourHandler);
Функции регистрации событий change() и keyup() возвращают исходный набор, поэтому их можно связать.