我可以确定使用JavaScript点击的内容吗?

时间:2011-10-27 13:47:20

标签: javascript jquery

我再次继承了别人的系统,这有点乱。我目前正在使用一个旧的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作为争论?

8 个答案:

答案 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。