2

我在 asp.net mvc 中工作。我有以下 JS

<script>
    function fun()
    {
        alert($(this).attr("id"));
    }
</script>

并在 View 中执行以下代码

@
{
  int i=1;
}
@for(i=1;i<10;i++)
{
  <a href="" id="@i" onclick="fun()">ABC</a>
}

我想获得调用的锚的 ID fun(),但我undefined总是获得价值。请帮忙。

4

4 回答 4

4

通过这个

<a href="" id="@i" onclick="fun(this)">ABC</a>

 function fun(elem) {
    alert(elem.id);
  }

在您引用的情况下,将引用窗口对象。因此,如果您传递element to the function,则该元素将在充当闭包的函数范围内可用。

于 2013-05-14T19:23:47.023 回答
3

尝试:

<script>
  function fun(el) {
    alert($(el).attr("id"));
  }
</script>

和:

@
{
  int i=1;
}
@for(i=1;i<10;i++)
{
  <a href="" id="@i" onclick="fun(this)">ABC</a>
}
于 2013-05-14T19:23:39.803 回答
2

如果我绝对必须使用 onclick 属性来执行此操作,我会调用该函数this作为上下文,并且当我在它的时候,传递事件对象。

<a href="" id="@i" onclick="fun.call(this,event)">ABC</a>

(无需更改fun方法)

于 2013-05-14T19:26:37.230 回答
1

是的,因为您必须像这样在 onclick 事件中发送对象本身:

@for(i=1;i<10;i++)
{
  <a href="" id="@i" onclick="fun(this)">ABC</a>
}

然后你可以访问它的属性:

<script>
        function fun(obj)
        {
            alert(obj.id);//obj.name, obj.value also you could take.
        }
    </script>
于 2013-05-14T19:24:37.950 回答