Как получить объект события из щелчка другого элемента события?

Я пробовал много раз и много искал, но это все равно не работает. Поэтому я надеюсь, что каждый сможет просветить меня.

У меня есть:

$.fn.logicTuoi_tinhTuoi = (e) => {
    $('#tuoi').html($.fn.tinhTuoi())
    if (!~$('#tuoi').text().indexOf('Lỗi')){
        $.fn.fireWorks(e)
        $('#tuoi').effect('fade')
    }else $('#tuoi').effect('shake')
}
$('#divTinhTuoi').on('click', '#tinhtuoi', (e) => {
    $.fn.logicTuoi_tinhTuoi(e)
})
$(document).on('keypress', '#divTinhTuoi', (e) => {
    if (e.which == 13){
        $.fn.logicTuoi_tinhTuoi(e)
    }
})

Проблема в том, что я не могу получить событие из события щелчка #tinhtuoi, когда нажимаю клавишу Enter. Поэтому я не могу передать e из события onClick #tinhtuoi в функцию $.fn.logicTuoi_tinhTuoi(e).

Ссылка на изображение, если вы не можете просмотреть: https://ibb.co/vcqjsPC

Я действительно хочу иметь возможность получить событие, нажав эту кнопку, нажав клавишу Enter. Но я не знаю, как или есть ли лучший способ сделать это, пожалуйста, предложите мне. Будет оценен по достоинству. Большое спасибо. Событие клика — это кнопка.

Ссылка, если вы не можете просмотреть изображение: https://ibb.co/DM3HdXK Я хочу, чтобы я мог получить букву «e» из события щелчка и передать ее в событие нажатия клавиши. Но я не знаю, что делать?

Я использую cdn Anime.js 3.2.2, Jquery 3.7.1, Jquery ui 1.13.

Зачем вам нужно событие кнопки? Когда происходит нажатие клавиши, возможно, еще не было события щелчка на кнопке. Что вы пытаетесь достичь?

Code Spirit 25.05.2024 16:20

@Code Spirit Мне очень жаль, что мой вопрос немного сбивает с толку. Поэтому я немного изменил его. Можете ли вы просмотреть изображения по ссылке в посте?

Hưng Nguyễn 25.05.2024 16:41

Фактическая проблема заключается в том, что вы хотите получить прослушиватель событий щелчка в обработчике нажатия клавиш, а не в том, что ваш код не работает. Почему ты хочешь это сделать? Очевидно, что событие Click Event не является событием нажатия клавиши. Если вы полагаетесь на данные события щелчка, есть и другие способы сделать это, но я все еще не знаю, что вы на самом деле хотите сделать.

Code Spirit 25.05.2024 18:08

@CodeSpirit Проблема в том, что когда я использую мышь, нажимаю эту кнопку, она удаляет 'e' $(this), и я могу сделать 'e.target.id' или в моей функции $.fn.fireWorks(e) есть используйте: pointerX = e.clientX || e.touches[0].clientX указательY = e.clientY || e.touches[0].clientY. Поэтому, когда я использую событие нажатия клавиши на другом объекте html, он не сможет получить букву «e», как когда я нажимаю мышью на эту кнопку. Если у вас есть другое решение, пожалуйста, дайте мне знать. Большое спасибо.

Hưng Nguyễn 25.05.2024 18:26
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
69
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам следует провести рефакторинг функции фейерверка, чтобы принять позицию, а не событие. Тем не менее, при нажатии клавиши нет позиции мыши, поэтому вам нужно заранее получить ее при перемещении мыши, а затем передать ее при нажатии клавиши.


// Store pointer position on mousemove
const mousePositon = {x: 0, y: 0};
$(window).on("mousemove", (e) => {
  Object.assign(mousePosition, {x: e.clientX, y: e.clientY});
});

$.fn.logicTuoi_tinhTuoi = (position) => {
    $('#tuoi').html($.fn.tinhTuoi())
    if (!~$('#tuoi').text().indexOf('Lỗi')){
        $.fn.fireWorks(position)
        $('#tuoi').effect('fade')
    }else $('#tuoi').effect('shake')
};

$('#divTinhTuoi').on('click', '#tinhtuoi', (e) => {
    // OnClick pass click event mouse position
    $.fn.logicTuoi_tinhTuoi({x: e.clientX, y: e.clientY})
})
$(document).on('keypress', '#divTinhTuoi', (e) => {
    if (e.which == 13){
        // Pass last mouse position
        $.fn.logicTuoi_tinhTuoi(mousePosition)
    }
})

Почему Object.assign, а не просто mousePositon.x = e.clientX?

Roko C. Buljan 26.05.2024 15:24

Вопрос стиля

Code Spirit 27.05.2024 12:08

Просто вызовите событие нажатия кнопки без параметра; $('#divTinhTuoi').click()

Javascript предоставит объект события кнопки обработчику событий.

В результате при нажатии клавиши Enter будет происходить так, как если бы кнопка была нажата.

$.fn.logicTuoi_tinhTuoi = (e) => {
    $('#tuoi').html($.fn.tinhTuoi())
    if (!~$('#tuoi').text().indexOf('Lỗi')){
        $.fn.fireWorks(e)
        $('#tuoi').effect('fade')
    }else $('#tuoi').effect('shake')
}
$('#divTinhTuoi').on('click', '#tinhtuoi', (e) => {
    $.fn.logicTuoi_tinhTuoi(e)
})
$(document).on('keypress', '#divTinhTuoi', (e) => {
    if (e.which == 13){
        // Javascript will provide the button's event object to the event handler
        $('#divTinhTuoi').click()
    }
})

Другие вопросы по теме

Модальный jquery и автозаполнение не работают с кнопкой обратной передачи
Отображение общей цены и размеров продукта в зависимости от количества и категории продукта в WooCommerce
Очень уникальная проблема клонирования — несколько действий клонирования на одной странице, но с разными идентификаторами
Индивидуальный макет карусели совы
Автоматическое обновление корзины WooCommerce при изменении количества товаров в корзине
Динамическое отображение определенного варианта оплаты на основе адреса электронной почты или телефона для выставления счета при оформлении заказа Woocommerce
У меня есть типы входных данных для флажка, и когда я выполняю методы удаления или получения, он работает, но страница не перезагружается
Пусть наложение div станет видимым через переход/анимацию круга клип-пути
Добавление кнопки удаления в поля динамического ввода в таблице
Включение кнопки после нажатия другой