#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')
метод и укажите идентификатор, который вернет то, что вам нужно.