Как применить несколько событий к одной и той же функции

88
6

Я не лучший в этом jquery. Но я пытаюсь отделить действие от функции, поэтому я могу применить несколько событий, которые вызывают одну и ту же функцию. К сожалению, это не работает. Кто-нибудь знает, почему?


Обновлена ​​функция, но все же ошибки


$(document).ready(function() {

var $info_items = jQuery('.checkbox.has_info, .has_info');

$info_items.click(function(event) {
$(this).show_text(event);
});

// I suspect it has something to do with this initalizer of the function here

jQuery.fn.show_text = function(event){
var $info_item = jQuery(this);
$info_items.filter(function(index){
return $(".hidden_text").css("display","block");
}).not($info_item).parent().next().next().hide("slow");
$info_item.parent().next().next().show("fast");
});

});

спросил(а) 2021-01-25T19:43:36+03:00 4 месяца, 3 недели назад
1
Решение
125

Что такое e, событие? Вам нужно указать аргумент события функции click(), чтобы использовать его. Кроме того, чтобы вызвать show_text так, чтобы он имел this, вам нужно вызвать его на элементе:


$info_items.click(function (event) {
// 'this' is the element in $info_items which was clicked

// invoke show_text on the element in question
$(this).show_text(event);
});

У вас также есть дополнительный ) в вашей окончательной строке });.

ответил(а) 2021-01-25T19:43:36+03:00 4 месяца, 3 недели назад
77

Вы можете использовать jQuery bind для присоединения нескольких событий к одной функции.

$('#whatever').bind('mouseover focus click', function() {
your_custom_function();
});

ответил(а) 2021-01-25T19:43:36+03:00 4 месяца, 3 недели назад
77

Вы ищете что-то вроде этого?


var handle = function(event) {
$(event.currentTarget).show_text(event);
};
$info_items.bind('click blur', handle);

ответил(а) 2021-01-25T19:43:36+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема