Могу ли я определить, что было нажато с помощью JavaScript?

#javascript #jquery

#javascript #jquery

Вопрос:

В очередной раз я унаследовал чужую систему, которая представляет собой небольшой беспорядок. В настоящее время я работаю со старым ASP.NET (VB) приложение webforms, которое передает JavaScript клиенту через сервер — нехорошо! Я также ограничен в том, что я могу редактировать в отношении приложения.

У меня есть сценарий, в котором у меня есть функция, которая выполняет простое упражнение, но также должна знать, какой элемент был нажат для выполнения функции, поскольку функция может быть выполнена из нескольких мест в системе…

Допустим, у меня была такая функция…

  function updateMyDiv() {
    $('#div1').hide();
    $('#div2').hide();
    $('#div13').show();
 }
 

как я мог бы получить идентификатор (например) HTML-элемента, который был нажат для выполнения этого?

Что — то вроде:

 function updateMyDiv() {

    alert(htmlelement.id) // need to raise the ID of what was clicked, 

    $('#div1').hide();
    $('#div2').hide();
    $('#div13').show();
}
 

Я могу подробнее остановиться на этом, если это необходимо, нужно ли мне выдавать this это за аргумент?

Комментарии:

1. Где находится ваш .click обработчик событий? Где бы он ни находился, переменная this внутри него будет элементом, на который нажат щелчок.

Ответ №1:

this Ключевое слово ссылается на элемент, который вызвал событие. Либо:

 <element onClick="doSomething(this);">
 

или

 element.onclick = function() {
    alert(this.id);
}
 

Ответ №2:

Свяжите ваши события щелчка с помощью jQuery, а затем ссылайтесь на $(this)

 $('.myDivClass').live('click', function () {
    updateMyDiv(this);
});

var updateMyDiv = function (that) {
   alert(that.id);

   // save the world
};
 

Комментарии:

1. Это лучше всего соответствовало потребностям mmy, хотя обработчик событий был проблемой из-за сложности системы, которую я пытался исправить. Спасибо всем за их ответы и помощь!

Ответ №3:

Вам не нужно передавать « this «, оно назначается автоматически. Вы можете сделать что-то вроде этого:

 $('div').click(function(){
  alert($(this).attr('id'));
})
 

Ответ №4:

Прикрепить функцию в качестве обработчика событий элементов — это один из способов,

 $(htmlelement).click(updateMyDiv);
 

Если вы работаете с уже сгенерированным событием, вы можете вызвать getElementByPoint и передать координаты событий x, y, чтобы получить элемент, над которым была наведена курсор мыши.

Ответ №5:

 $('.something').click(function(){
    alert($(this).attr('id'));
});
 

Ответ №6:

Вам нужно будет передать ему event.target переменную.

 $("element").click(function(event) {
    updateMyDiv($(event.target));
});

function updateMyDiv(target) {
    alert(target.prop("id"));
}
 

Ответ №7:

Где ваш .click обработчик событий? Где бы это ни было, переменная this внутри него будет элементом, на который нажали.

Если у вас есть onclick атрибут, запускающий вашу функцию, измените его на

 <tag attribute="value" onclick="updateMyDiv(this)">
 

и измените JavaScript на

 function updateMyDiv(obj) {
    alert(obj.getAttribute('id')) // need to raise the ID of what was clicked, 

    $('#div1').hide();
    $('#div2').hide();
    $('#div13').show();
}
 

Ответ №8:

используйте этот .attr('id') метод и укажите идентификатор, который вернет то, что вам нужно.