我再次继承了别人的系统,这有点乱。我目前正在使用一个旧的ASP.NET(VB)webforms应用程序,它通过服务器将JavaScript发送到客户端 - 不是很好!我对应用程序的编辑也很有限。
我有一个场景,我有一个功能,只做一个简单的练习,但也需要知道点击了什么项目来执行该功能,因为该功能可以从系统内的许多地方执行... < / p>
说我有这样的功能......
function updateMyDiv() {
$('#div1').hide();
$('#div2').hide();
$('#div13').show();
}
如何获取被点击执行此操作的HTML元素的ID(例如)?
类似的东西:
function updateMyDiv() {
alert(htmlelement.id) // need to raise the ID of what was clicked,
$('#div1').hide();
$('#div2').hide();
$('#div13').show();
}
如果需要,我可以对此进行扩展,我是否需要通过this
作为争论?
答案 0 :(得分:3)
this
关键字引用触发事件的元素。之一:
<element onClick="doSomething(this);">
或
element.onclick = function() {
alert(this.id);
}
答案 1 :(得分:1)
使用jQuery绑定点击事件,然后引用$(this)
$('.myDivClass').live('click', function () {
updateMyDiv(this);
});
var updateMyDiv = function (that) {
alert(that.id);
// save the world
};
答案 2 :(得分:1)
您无需传递“this
”,它会自动分配。你可以这样做:
$('div').click(function(){
alert($(this).attr('id'));
})
答案 3 :(得分:0)
附加函数作为元素事件处理程序是单向的,
$(htmlelement).click(updateMyDiv);
如果您正在使用已生成的事件,则可以调用getElementByPoint
并传递事件x,y coords以获取鼠标悬停的元素。
答案 4 :(得分:0)
$('.something').click(function(){
alert($(this).attr('id'));
});
答案 5 :(得分:0)
您需要将event.target
变量传递给它。
$("element").click(function(event) {
updateMyDiv($(event.target));
});
function updateMyDiv(target) {
alert(target.prop("id"));
}
答案 6 :(得分:0)
您的.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();
}
答案 7 :(得分:-1)
使用.attr('id')
方法并指定将返回所需内容的ID。