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);
  }

を参照している場合、これは window オブジェクトを参照します。したがって、 を渡す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 に答える